Just because of Canon's firmware:
uint handle_PTP_OC_0x9050
(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5)
{
uint uVar1;
uint uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
undefined2 local_38 [2];
undefined4 local_34;
undefined4 uStack48;
undefined4 local_2c;
uVar7 = 0;
j_bzero(local_38,0x24);
uStack48 = param_5;
local_2c = 0;
DAT_0000ef68 += 1;
local_34 = param_4;
if (DAT_0000ef68 == 3) {
uVar1 = add_ptp_handler(&DAT_00009052,handle_PTP_OC_0x9052 + 1,0);
uVar2 = add_ptp_handler(&DAT_00009053,handle_PTP_OC_0x9053 + 1,0);
uVar3 = add_ptp_handler(&DAT_00009057,handle_PTP_OC_0x9057 + 1,0);
uVar4 = add_ptp_handler(&DAT_00009058,handle_PTP_OC_0x9058 + 1,0);
uVar5 = add_ptp_handler(&DAT_00009059,handle_PTP_OC_0x9059 + 1,0);
uVar6 = add_ptp_handler(&DAT_0000905a,handle_PTP_OC_0x905a + 1,0);
uVar7 = add_ptp_handler(&DAT_0000905b,handle_PTP_OC_0x905b + 1,0);
uVar7 |= uVar6 | uVar5 | uVar4 | uVar3 | uVar2 | uVar1;
DAT_0000ef64 = 1;
}
if ((uVar7 & 1) == 0) {
local_38[0] = 0x2001;
(*(code *)param_2[3])(*param_2,local_38);
}
else {
local_38[0] = 0x201f;
(*(code *)param_2[3])(*param_2,local_38);
uVar7 = 1;
}
return uVar7;
}