Function at 0x43163a
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x20
push ebx
mov ebx, ecx
mov eax, dword [ebx + 0x108]
mov ecx, dword [esp + 0x28]
push ebp
xor edx, edx
cmp eax, edx
push esi
push edi
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], edx
je 0x43112a
xor eax, eax
mov ah, byte [ecx]
mov al, byte [ecx + 1]
jmp 0x431131
xor eax, eax
mov ah, byte [ecx + 1]
mov al, byte [ecx]
mov edi, dword [esp + 0x3c]
lea esi, [eax + eax*2]
lea ecx, [ecx + esi*4 + 2]
mov esi, dword [esp + 0x38]
lea ebp, [esi + edi]
cmp ecx, ebp
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], ebp
jbe 0x431170
lea edi, [ebx + 4]
mov ecx, 6
mov esi, str.Illegally_sized_directory
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x20
ret 0x14
test eax, eax
mov edi, dword [esp + 0x40]
mov dword [esp + 0x14], 0
jle 0x431325
mov eax, dword [esp + 0x14]
mov ebp, dword [ebx + 0x108]
test ebp, ebp
mov ecx, dword [esp + 0x34]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4 + 2]
je 0x4311aa
xor edx, edx
mov dh, byte [eax]
mov dl, byte [eax + 1]
mov dword [esp + 0x10], edx
jmp 0x4311b5
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax]
mov dword [esp + 0x10], ecx
test ebp, ebp
je 0x4311c5
xor edx, edx
mov dh, byte [eax + 2]
mov dl, byte [eax + 3]
mov esi, edx
jmp 0x4311cf
xor ecx, ecx
mov ch, byte [eax + 3]
mov cl, byte [eax + 2]
mov esi, ecx
test ebp, ebp
je 0x4311ef
movsx ecx, byte [eax + 4]
movzx edx, byte [eax + 5]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax + 6]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax + 7]
jmp 0x431209
movsx ecx, byte [eax + 7]
movzx edx, byte [eax + 6]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax + 5]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax + 4]
shl ecx, 8
or ecx, edx
lea edx, [esi - 1]
cmp edx, 0xc
jge 0x43181d
mov ebp, dword [esi*4 + 0x490d9c]
imul ebp, ecx
cmp ebp, 4
mov dword [esp + 0x28], ebp
jle 0x431250
add eax, 8
push eax
mov ecx, ebx
call fcn.00430cf0
mov edx, dword [esp + 0x3c]
lea ecx, [eax + ebp]
cmp ecx, edx
ja 0x431838
mov edx, dword [esp + 0x38]
lea ebp, [eax + edx]
jmp 0x431253
lea ebp, [eax + 8]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
lea eax, [edx + ebp]
cmp dword [ecx], eax
jae 0x431264
mov dword [ecx], eax
mov eax, dword [esp + 0x10]
cmp eax, 0x9201
jg 0x431580
je 0x431525
cmp eax, 0x202
jg 0x43143d
je 0x431426
add eax, 0xfffffef1
cmp eax, 0xf2
ja case.default.0x43159f
movzx eax, byte [eax + 0x4318f0]
jmp dword [eax*4 + 0x4318d0]
push 0x1f
push ebp
lea ecx, [edi + 5]
push ecx
call fcn.00485490
add esp, 0xc
cmp dword [esp + 0x10], 0x8769
je 0x4312c7
cmp dword [esp + 0x10], 0xa005
jne case.default.0x4317da
push ebp
mov ecx, ebx
call fcn.00430cf0
cmp eax, 8
jbe case.default.0x4317da
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, ecx
jb 0x4318b3
cmp eax, dword [esp + 0x20]
ja 0x4318b3
mov edx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x40]
push edi
push edx
push ecx
push eax
mov ecx, ebx
call fcn.00431100
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
inc eax
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x431184
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov eax, dword [ebx + 0x108]
test eax, eax
je 0x431855
xor eax, eax
mov ah, byte [ecx]
mov al, byte [ecx + 1]
jmp 0x43185c
push 0x27
push ebp
lea edx, [edi + 0x25]
push edx
jmp 0x4312ab
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
cmp eax, 1
mov dword [edi + 0x6c], eax
jl 0x43136a
cmp eax, 8
jle case.default.0x43159f
mov eax, dword [esp + 0x40]
lea edi, [ebx + 4]
mov ecx, 6
mov esi, str.Undefined_rotation_value
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov dword [eax + 0x6c], 0
mov edi, eax
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
dec eax
cmp eax, 4
ja case.default.0x43159f
jmp dword [eax*4 + 0x4319e4]
mov dword [edi + 0xbc], 0x3f800000
jmp case.default.0x43159f
mov dword [edi + 0xbc], 0x3ec99326
jmp case.default.0x43159f
mov dword [edi + 0xbc], 0x3d214285
jmp case.default.0x43159f
mov dword [edi + 0xbc], 0x3825214d
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0xb4]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0xb8]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
mov dword [esp + 0x24], eax
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
mov dword [esp + 0x18], eax
jmp case.default.0x4317da
cmp eax, 0x8827
jg 0x4314d0
je 0x4314a2
sub eax, 0x829a
je 0x43148e
sub eax, 3
je 0x43147a
sub eax, 0x585
jne case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
mov dword [edi + 0x9c], eax
jmp case.default.0x4317da
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0x84]
jmp case.default.0x4317da
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0x80]
jmp case.default.0x4317da
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
cmp eax, 0x32
mov dword [edi + 0xa0], eax
jge case.default.0x4317da
imul eax, eax, 0xc8
mov dword [edi + 0xa0], eax
jmp case.default.0x4317da
sub eax, 0x9000
je 0x431514
sub eax, 3
je 0x431500
sub eax, 0xff
jne case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
mov dword [edi + 0xa4], eax
jmp case.default.0x4317da
push 0x13
lea ecx, [edi + 0x4d]
push ebp
push ecx
call fcn.00485490
add esp, 0xc
jmp case.default.0x4317da
push 4
push ebp
push edi
call fcn.00485490
add esp, 0xc
jmp case.default.0x4317da
fld dword [0x48f158]
fld dword [edi + 0x80]
fucompp
fnstsw ax
test ah, 0x44
jp case.default.0x4317da
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fld qword [0x490d88]
fldln2
fxch st(1)
fyl2x
fst dword [esp + 0x28]
fmulp st(1)
fldl2e
fmulp st(1)
fld st(0)
frndint
fxch st(1)
fsub st(1)
f2xm1
fld1
faddp st(1)
fscale
fstp st(1)
fdivr qword [0x48f728]
fstp dword [edi + 0x80]
jmp case.default.0x4317da
cmp eax, 0x9286
jg 0x431740
je 0x43169e
add eax, 0xffff6dfe
cmp eax, 8
ja case.default.0x43159f
jmp dword [eax*4 + 0x4319f8]
fld dword [0x48f158]
fld dword [edi + 0x84]
fucompp
fnstsw ax
test ah, 0x44
jp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fld qword [0x490d88]
fldln2
fxch st(1)
fyl2x
fst dword [esp + 0x28]
fmulp st(1)
fmul qword [0x4909f0]
fldl2e
fmulp st(1)
fld st(0)
frndint
fxch st(1)
fsub st(1)
f2xm1
fld1
faddp st(1)
fscale
fstp st(1)
fstp dword [edi + 0x84]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0xc0]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0x7c]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0x88]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
and al, 7
neg al
sbb eax, eax
neg eax
mov dword [edi + 0x78], eax
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0x90]
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
mov dword [edi + 0x94], eax
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
mov dword [edi + 0x98], eax
jmp case.default.0x43159f
mov cl, byte [edx + ebp - 1]
cmp cl, 0x20
lea eax, [edx - 1]
jne 0x4316c2
lea ebx, [ebx]
test eax, eax
mov byte [eax + ebp], 0
je 0x4316c2
mov cl, byte [eax + ebp - 1]
dec eax
cmp cl, 0x20
je 0x4316b0
mov ecx, 5
mov edi, str.ASCII
mov esi, ebp
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x43171e
mov eax, 5
lea esp, [esp]
mov cl, byte [eax + ebp]
test cl, cl
je 0x4316ec
cmp cl, 0x20
jne 0x4316fb
inc eax
cmp eax, 0xa
jl 0x4316e0
mov edi, dword [esp + 0x40]
jmp case.default.0x4317da
add eax, ebp
push 0xc7
push eax
mov eax, dword [esp + 0x48]
add eax, 0xc4
push eax
call fcn.00485490
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x4317da
mov ecx, dword [esp + 0x40]
push 0xc7
add ecx, 0xc4
push ebp
push ecx
call fcn.00485490
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x4317da
cmp eax, 0xa20f
jg 0x4317b7
je 0x4317a3
cmp eax, 0xa002
jl case.default.0x43159f
mov eax, dword [esp + 0x10]
cmp eax, 0xa003
jle 0x43177e
cmp eax, 0xa20e
jne case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0xa8]
jmp case.default.0x4317da
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
cmp dword [ebx + 0x104], eax
jge case.default.0x43159f
mov dword [ebx + 0x104], eax
jmp case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
fstp dword [edi + 0xac]
jmp case.default.0x4317da
cmp eax, 0xa210
jne case.default.0x43159f
push esi
push ebp
mov ecx, ebx
call fcn.00430d40
call fcn.0041af36
dec eax
cmp eax, 4
ja case.default.0x4317da
jmp dword [eax*4 + 0x431a1c]
mov dword [edi + 0xb0], 0x3f800000
jmp case.default.0x4317da
mov dword [edi + 0xb0], 0x3ec99326
jmp case.default.0x4317da
mov dword [edi + 0xb0], 0x3d214285
jmp case.default.0x4317da
mov dword [edi + 0xb0], 0x3825214d
jmp case.default.0x4317da
lea edi, [ebx + 4]
mov ecx, 8
mov esi, str.Illegal_format_code_in_EXIF_dir
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x20
ret 0x14
lea edi, [ebx + 4]
mov ecx, 9
mov esi, str.Illegal_pointer_offset_value_in_EXIF.
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x20
ret 0x14
xor eax, eax
mov ah, byte [ecx + 1]
mov al, byte [ecx]
test eax, eax
je 0x431882
add eax, esi
cmp eax, esi
jb 0x4318b3
cmp eax, ebp
ja 0x4318b3
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
push ecx
push edi
push edx
push esi
push eax
mov ecx, ebx
call fcn.00431100
mov edx, dword [esp + 0x18]
test edx, edx
je 0x4318a7
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4318a7
mov ebx, dword [esp + 0x3c]
lea ecx, [edx + eax]
cmp ecx, ebx
ja 0x4318a7
add eax, esi
mov dword [edi + 0x4ac], eax
mov dword [edi + 0x4b0], edx
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x20
ret 0x14
lea edi, [ebx + 4]
mov ecx, 6
mov esi, str.Illegal_subdirectory_link
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x20
ret 0x14