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

Disassembly:
sub esp, 0x20
push ebx
push ebp
push esi
mov esi, dword [esp + 0x30]
push edi
xor eax, eax
mov ebx, ecx
push esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
call fcn.10090740
mov edx, dword [esp + 0x3c]
lea ecx, [eax + eax*2]
mov dword [esp + 0x28], eax
lea ecx, [esi + ecx*4 + 2]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x2c], ecx
lea ebp, [esi + edx]
cmp ecx, ebp
mov dword [esp + 0x1c], ebp
jbe 0x10090850
mov edi, str.Illegally_sized_directory
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebx + 4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor al, al
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0x14
mov edi, dword [esp + 0x40]
mov dword [esp + 0x10], 0
test eax, eax
jle 0x10090eed
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [eax + eax*2]
lea ebp, [edx + ecx*4 + 2]
mov ecx, ebx
push ebp
call fcn.10090740
mov dword [esp + 0x18], eax
lea eax, [ebp + 2]
push eax
mov ecx, ebx
call fcn.10090740
lea ecx, [ebp + 4]
mov esi, eax
push ecx
mov ecx, ebx
call fcn.100907d0
lea edx, [esi - 1]
cmp edx, 0xc
jge 0x10090e8b
mov ecx, dword [esi*4 + 0x100e3f20]
imul ecx, eax
cmp ecx, 4
mov dword [esp + 0x14], ecx
jle 0x100908dd
add ebp, 8
mov ecx, ebx
push ebp
call fcn.100907d0
mov ecx, dword [esp + 0x14]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x3c]
cmp edx, ecx
ja 0x10090ebc
mov ecx, dword [esp + 0x38]
lea ebp, [eax + ecx]
jmp 0x100908e0
add ebp, 8
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
lea eax, [edx + ebp]
cmp dword [ecx], eax
jae 0x100908f1
mov dword [ecx], eax
mov eax, dword [esp + 0x18]
cmp eax, 0x9201
jg 0x10090bfb
je 0x10090ba8
cmp eax, 0x202
jg 0x10090abd
je 0x10090aa6
add eax, 0xfffffef1
cmp eax, 0xf2
ja case.default.0x10090c1a
xor edx, edx
mov dl, byte [eax + 0x10090fa0]
jmp dword [edx*4 + 0x10090f80]
push 0x1f
lea eax, [edi + 5]
push ebp
push eax
call fcn.10037280
add esp, 0xc
mov eax, dword [esp + 0x18]
cmp eax, 0x8769
je 0x10090953
cmp eax, 0xa005
jne case.default.0x10090e48
push ebp
mov ecx, ebx
call fcn.100907d0
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, ecx
jb 0x10090f4c
cmp eax, dword [esp + 0x1c]
ja 0x10090f4c
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.100907e0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x10090864
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
jmp 0x10090eed
push 0x27
lea ecx, [edi + 0x25]
push ebp
push ecx
jmp 0x10090939
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
cmp eax, 1
mov dword [edi + 0x6c], eax
jl 0x100909d5
cmp eax, 8
jle case.default.0x10090c1a
mov edi, str.Undefined_rotation_value
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebx + 4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x40]
mov edi, ecx
mov dword [ecx + 0x6c], 0
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
dec eax
cmp eax, 4
ja case.default.0x10090c1a
jmp dword [eax*4 + 0x10091094]
mov dword [edi + 0xbc], 0x3f800000
jmp case.default.0x10090c1a
mov dword [edi + 0xbc], 0x3ec99326
jmp case.default.0x10090c1a
mov dword [edi + 0xbc], 0x3d214285
jmp case.default.0x10090c1a
mov dword [edi + 0xbc], 0x3825214d
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0xb4]
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0xb8]
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
mov dword [esp + 0x24], eax
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
mov dword [esp + 0x20], eax
jmp case.default.0x10090e48
cmp eax, 0x8827
jg 0x10090b53
je 0x10090b22
sub eax, 0x829a
je 0x10090b0e
sub eax, 3
je 0x10090afa
sub eax, 0x585
jne case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
mov dword [edi + 0x9c], eax
jmp case.default.0x10090e48
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0x84]
jmp case.default.0x10090e48
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0x80]
jmp case.default.0x10090e48
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
cmp eax, 0x32
mov dword [edi + 0xa0], eax
jge case.default.0x10090e48
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
mov dword [edi + 0xa0], edx
jmp case.default.0x10090e48
sub eax, 0x9000
je 0x10090b97
sub eax, 3
je 0x10090b83
sub eax, 0xff
jne case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
mov dword [edi + 0xa4], eax
jmp case.default.0x10090e48
push 0x13
lea eax, [edi + 0x4d]
push ebp
push eax
call fcn.10037280
add esp, 0xc
jmp case.default.0x10090e48
push 4
push ebp
push edi
call fcn.10037280
add esp, 0xc
jmp case.default.0x10090e48
fld dword [edi + 0x80]
fcomp dword [0x100dcea0]
fnstsw ax
test ah, 0x40
je case.default.0x10090e48
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fldln2
fld qword [0x100e3ec0]
fyl2x
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 [0x100db8c0]
fstp dword [edi + 0x80]
jmp case.default.0x10090e48
cmp eax, 0x9286
jg 0x10090db2
je 0x10090d1d
add eax, 0xffff6dfe
cmp eax, 8
ja case.default.0x10090c1a
jmp dword [eax*4 + 0x100910a8]
fld dword [edi + 0x84]
fcomp dword [0x100dcea0]
fnstsw ax
test ah, 0x40
je case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fldln2
fld qword [0x100e3ec0]
fyl2x
fmulp st(1)
fmul qword [0x100dd4e8]
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.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0xc0]
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0x7c]
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0x88]
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
test al, 7
je 0x10090ccb
mov dword [edi + 0x78], 1
jmp case.default.0x10090c1a
mov dword [edi + 0x78], 0
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0x90]
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
mov dword [edi + 0x94], eax
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
mov dword [edi + 0x98], eax
jmp case.default.0x10090c1a
mov cl, byte [edx + ebp - 1]
lea eax, [edx - 1]
cmp cl, 0x20
jne 0x10090d3b
test eax, eax
mov byte [eax + ebp], 0
je 0x10090d3b
mov cl, byte [eax + ebp - 1]
dec eax
cmp cl, 0x20
je 0x10090d29
mov ecx, 5
mov edi, str.ASCII
mov esi, ebp
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10090d90
mov eax, 5
mov cl, byte [eax + ebp]
test cl, cl
je 0x10090d5e
cmp cl, 0x20
jne 0x10090d6d
inc eax
cmp eax, 0xa
jl 0x10090d52
mov edi, dword [esp + 0x40]
jmp case.default.0x10090e48
add eax, ebp
push 0xc7
push eax
mov eax, dword [esp + 0x48]
add eax, 0xc4
push eax
call fcn.10037280
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x10090e48
mov ecx, dword [esp + 0x40]
push 0xc7
add ecx, 0xc4
push ebp
push ecx
call fcn.10037280
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x10090e48
cmp eax, 0xa20f
jg 0x10090e25
je 0x10090e11
cmp eax, 0xa002
jl case.default.0x10090c1a
cmp eax, 0xa003
jle 0x10090dec
cmp eax, 0xa20e
jne case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0xa8]
jmp case.default.0x10090e48
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
cmp dword [ebx + 0x104], eax
jge case.default.0x10090c1a
mov dword [ebx + 0x104], eax
jmp case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
fstp dword [edi + 0xac]
jmp case.default.0x10090e48
cmp eax, 0xa210
jne case.default.0x10090c1a
push esi
push ebp
mov ecx, ebx
call fcn.100910e0
call fcn.100307fc
dec eax
cmp eax, 4
ja case.default.0x10090e48
jmp dword [eax*4 + 0x100910cc]
mov dword [edi + 0xb0], 0x3f800000
jmp case.default.0x10090e48
mov dword [edi + 0xb0], 0x3ec99326
jmp case.default.0x10090e48
mov dword [edi + 0xb0], 0x3d214285
jmp case.default.0x10090e48
mov dword [edi + 0xb0], 0x3825214d
jmp case.default.0x10090e48
mov edi, str.Illegal_format_code_in_EXIF_dir
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebx + 4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor al, al
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0x14
mov edi, str.Illegal_pointer_offset_value_in_EXIF.
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebx + 4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor al, al
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0x14
push ecx
mov ecx, ebx
call fcn.10090740
test eax, eax
je 0x10090f17
add eax, esi
cmp eax, esi
jb 0x10090f4c
cmp eax, ebp
ja 0x10090f4c
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.100907e0
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x10090f40
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10090f40
mov ebx, dword [esp + 0x3c]
lea edx, [ecx + eax]
cmp edx, ebx
ja 0x10090f40
add eax, esi
mov dword [edi + 0x4b0], ecx
mov dword [edi + 0x4ac], eax
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x20
ret 0x14
mov edi, str.Illegal_subdirectory_link
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebx + 4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor al, al
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0x14