Function at 0x1002797d
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.10027410
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 0x10027520
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 0x10027bbd
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.10027410
mov dword [esp + 0x18], eax
lea eax, [ebp + 2]
push eax
mov ecx, ebx
call fcn.10027410
lea ecx, [ebp + 4]
mov esi, eax
push ecx
mov ecx, ebx
call fcn.100274a0
lea edx, [esi - 1]
cmp edx, 0xc
jge 0x10027b5b
mov ecx, dword [esi*4 + 0x1008c4e8]
imul ecx, eax
cmp ecx, 4
mov dword [esp + 0x14], ecx
jle 0x100275ad
add ebp, 8
mov ecx, ebx
push ebp
call fcn.100274a0
mov ecx, dword [esp + 0x14]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x3c]
cmp edx, ecx
ja 0x10027b8c
mov ecx, dword [esp + 0x38]
lea ebp, [eax + ecx]
jmp 0x100275b0
add ebp, 8
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
lea eax, [edx + ebp]
cmp dword [ecx], eax
jae 0x100275c1
mov dword [ecx], eax
mov eax, dword [esp + 0x18]
cmp eax, 0x9201
jg 0x100278cb
je 0x10027878
cmp eax, 0x202
jg 0x1002778d
je 0x10027776
add eax, 0xfffffef1
cmp eax, 0xf2
ja case.default.0x100278ea
xor edx, edx
mov dl, byte [eax + 0x10027c70]
jmp dword [edx*4 + 0x10027c50]
push 0x1f
lea eax, [edi + 5]
push ebp
push eax
call fcn.10077670
add esp, 0xc
mov eax, dword [esp + 0x18]
cmp eax, 0x8769
je 0x10027623
cmp eax, 0xa005
jne case.default.0x10027b18
push ebp
mov ecx, ebx
call fcn.100274a0
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, ecx
jb 0x10027c1c
cmp eax, dword [esp + 0x1c]
ja 0x10027c1c
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.100274b0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x10027534
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
jmp 0x10027bbd
push 0x27
lea ecx, [edi + 0x25]
push ebp
push ecx
jmp 0x10027609
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
cmp eax, 1
mov dword [edi + 0x6c], eax
jl 0x100276a5
cmp eax, 8
jle case.default.0x100278ea
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.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
dec eax
cmp eax, 4
ja case.default.0x100278ea
jmp dword [eax*4 + 0x10027d64]
mov dword [edi + 0xbc], 0x3f800000
jmp case.default.0x100278ea
mov dword [edi + 0xbc], 0x3ec99326
jmp case.default.0x100278ea
mov dword [edi + 0xbc], 0x3d214285
jmp case.default.0x100278ea
mov dword [edi + 0xbc], 0x3825214d
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0xb4]
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0xb8]
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
mov dword [esp + 0x24], eax
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
mov dword [esp + 0x20], eax
jmp case.default.0x10027b18
cmp eax, 0x8827
jg 0x10027823
je 0x100277f2
sub eax, 0x829a
je 0x100277de
sub eax, 3
je 0x100277ca
sub eax, 0x585
jne case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
mov dword [edi + 0x9c], eax
jmp case.default.0x10027b18
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0x84]
jmp case.default.0x10027b18
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0x80]
jmp case.default.0x10027b18
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
cmp eax, 0x32
mov dword [edi + 0xa0], eax
jge case.default.0x10027b18
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
mov dword [edi + 0xa0], edx
jmp case.default.0x10027b18
sub eax, 0x9000
je 0x10027867
sub eax, 3
je 0x10027853
sub eax, 0xff
jne case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
mov dword [edi + 0xa4], eax
jmp case.default.0x10027b18
push 0x13
lea eax, [edi + 0x4d]
push ebp
push eax
call fcn.10077670
add esp, 0xc
jmp case.default.0x10027b18
push 4
push ebp
push edi
call fcn.10077670
add esp, 0xc
jmp case.default.0x10027b18
fld dword [edi + 0x80]
fcomp dword [0x1008bdf0]
fnstsw ax
test ah, 0x40
je case.default.0x10027b18
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fldln2
fld qword [0x1008bd98]
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 [0x1008b498]
fstp dword [edi + 0x80]
jmp case.default.0x10027b18
cmp eax, 0x9286
jg 0x10027a82
je 0x100279ed
add eax, 0xffff6dfe
cmp eax, 8
ja case.default.0x100278ea
jmp dword [eax*4 + 0x10027d78]
fld dword [edi + 0x84]
fcomp dword [0x1008bdf0]
fnstsw ax
test ah, 0x40
je case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fldln2
fld qword [0x1008bd98]
fyl2x
fmulp st(1)
fmul qword [0x1008b4a0]
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.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0xc0]
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0x7c]
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0x88]
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
test al, 7
je 0x1002799b
mov dword [edi + 0x78], 1
jmp case.default.0x100278ea
mov dword [edi + 0x78], 0
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0x90]
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
mov dword [edi + 0x94], eax
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
mov dword [edi + 0x98], eax
jmp case.default.0x100278ea
mov cl, byte [edx + ebp - 1]
lea eax, [edx - 1]
cmp cl, 0x20
jne 0x10027a0b
test eax, eax
mov byte [eax + ebp], 0
je 0x10027a0b
mov cl, byte [eax + ebp - 1]
dec eax
cmp cl, 0x20
je 0x100279f9
mov ecx, 5
mov edi, str.ASCII
mov esi, ebp
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10027a60
mov eax, 5
mov cl, byte [eax + ebp]
test cl, cl
je 0x10027a2e
cmp cl, 0x20
jne 0x10027a3d
inc eax
cmp eax, 0xa
jl 0x10027a22
mov edi, dword [esp + 0x40]
jmp case.default.0x10027b18
add eax, ebp
push 0xc7
push eax
mov eax, dword [esp + 0x48]
add eax, 0xc4
push eax
call fcn.10077670
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x10027b18
mov ecx, dword [esp + 0x40]
push 0xc7
add ecx, 0xc4
push ebp
push ecx
call fcn.10077670
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x10027b18
cmp eax, 0xa20f
jg 0x10027af5
je 0x10027ae1
cmp eax, 0xa002
jl case.default.0x100278ea
cmp eax, 0xa003
jle 0x10027abc
cmp eax, 0xa20e
jne case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0xa8]
jmp case.default.0x10027b18
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
cmp dword [ebx + 0x104], eax
jge case.default.0x100278ea
mov dword [ebx + 0x104], eax
jmp case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
fstp dword [edi + 0xac]
jmp case.default.0x10027b18
cmp eax, 0xa210
jne case.default.0x100278ea
push esi
push ebp
mov ecx, ebx
call fcn.10027db0
call fcn.10076c44
dec eax
cmp eax, 4
ja case.default.0x10027b18
jmp dword [eax*4 + 0x10027d9c]
mov dword [edi + 0xb0], 0x3f800000
jmp case.default.0x10027b18
mov dword [edi + 0xb0], 0x3ec99326
jmp case.default.0x10027b18
mov dword [edi + 0xb0], 0x3d214285
jmp case.default.0x10027b18
mov dword [edi + 0xb0], 0x3825214d
jmp case.default.0x10027b18
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.10027410
test eax, eax
je 0x10027be7
add eax, esi
cmp eax, esi
jb 0x10027c1c
cmp eax, ebp
ja 0x10027c1c
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.100274b0
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x10027c10
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10027c10
mov ebx, dword [esp + 0x3c]
lea edx, [ecx + eax]
cmp edx, ebx
ja 0x10027c10
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