Function at 0x10027aa8
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 sym.YunImage.fne_protected:_int___thiscall_CxImageJPG::CxExifInfo::Get16u_void__
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 0x10027640
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 0x10027cea
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 sym.YunImage.fne_protected:_int___thiscall_CxImageJPG::CxExifInfo::Get16u_void__
mov dword [esp + 0x18], eax
lea eax, [ebp + 2]
push eax
mov ecx, ebx
call sym.YunImage.fne_protected:_int___thiscall_CxImageJPG::CxExifInfo::Get16u_void__
lea ecx, [ebp + 4]
mov esi, eax
push ecx
mov ecx, ebx
call sym.YunImage.fne_protected:_unsigned_long_int___thiscall_CxImageJPG::CxExifInfo::Get32u_void__
lea edx, [esi - 1]
cmp edx, 0xc
jge 0x10027c88
mov ecx, dword [esi*4 + 0x100958e8]
imul ecx, eax
cmp ecx, 4
mov dword [esp + 0x14], ecx
jle 0x100276cd
add ebp, 8
mov ecx, ebx
push ebp
call sym.YunImage.fne_protected:_unsigned_long_int___thiscall_CxImageJPG::CxExifInfo::Get32u_void__
mov ecx, dword [esp + 0x14]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x3c]
cmp edx, ecx
ja 0x10027cb9
mov ecx, dword [esp + 0x38]
lea ebp, [eax + ecx]
jmp 0x100276d0
add ebp, 8
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
lea eax, [edx + ebp]
cmp dword [ecx], eax
jae 0x100276e1
mov dword [ecx], eax
mov eax, dword [esp + 0x18]
cmp eax, 0x9201
jg 0x100279f6
je 0x100279a3
cmp eax, 0x202
jg 0x100278b6
je 0x1002789f
add eax, 0xfffffef1
cmp eax, 0xf2
ja case.default.0x10027a15
xor edx, edx
mov dl, byte [eax + 0x10027d9c]
jmp dword [edx*4 + 0x10027d7c]
push 0x1f
lea eax, [edi + 5]
push ebp
push eax
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
mov eax, dword [esp + 0x18]
cmp eax, 0x8769
je 0x10027744
cmp eax, 0xa005
jne case.default.0x10027c45
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_unsigned_long_int___thiscall_CxImageJPG::CxExifInfo::Get32u_void__
cmp eax, 8
jbe case.default.0x10027c45
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, ecx
jb 0x10027d49
cmp eax, dword [esp + 0x1c]
ja 0x10027d49
mov edx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x40]
push edi
push edx
push ecx
push eax
mov ecx, ebx
call sym.YunImage.fne_protected:_bool___thiscall_CxImageJPG::CxExifInfo::ProcessExifDir_unsigned_char___unsigned_char___unsigned_int__struct_CxImageJPG::tag_ExifInfo__const__unsigned_char___const_
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x10027654
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
jmp 0x10027cea
push 0x27
lea ecx, [edi + 0x25]
push ebp
push ecx
jmp 0x10027729
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
cmp eax, 1
mov dword [edi + 0x6c], eax
jl 0x100277ce
cmp eax, 8
jle case.default.0x10027a15
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.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
dec eax
cmp eax, 4
ja case.default.0x10027a15
jmp dword [eax*4 + 0x10027e90]
mov dword [edi + 0xbc], 0x3f800000
jmp case.default.0x10027a15
mov dword [edi + 0xbc], 0x3ec99326
jmp case.default.0x10027a15
mov dword [edi + 0xbc], 0x3d214285
jmp case.default.0x10027a15
mov dword [edi + 0xbc], 0x3825214d
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0xb4]
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0xb8]
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x24], eax
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x20], eax
jmp case.default.0x10027c45
cmp eax, 0x8827
jg 0x1002794c
je 0x1002791b
sub eax, 0x829a
je 0x10027907
sub eax, 3
je 0x100278f3
sub eax, 0x585
jne case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
mov dword [edi + 0x9c], eax
jmp case.default.0x10027c45
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0x84]
jmp case.default.0x10027c45
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0x80]
jmp case.default.0x10027c45
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
cmp eax, 0x32
mov dword [edi + 0xa0], eax
jge case.default.0x10027c45
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
mov dword [edi + 0xa0], edx
jmp case.default.0x10027c45
sub eax, 0x9000
je 0x10027991
sub eax, 3
je 0x1002797c
sub eax, 0xff
jne case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
mov dword [edi + 0xa4], eax
jmp case.default.0x10027c45
push 0x13
lea eax, [edi + 0x4d]
push ebp
push eax
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
jmp case.default.0x10027c45
push 4
push ebp
push edi
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
jmp case.default.0x10027c45
fld dword [edi + 0x80]
fcomp dword [0x10095560]
fnstsw ax
test ah, 0x40
je case.default.0x10027c45
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fldln2
fld qword [0x10095480]
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 [0x10095520]
fstp dword [edi + 0x80]
jmp case.default.0x10027c45
cmp eax, 0x9286
jg 0x10027baf
je 0x10027b18
add eax, 0xffff6dfe
cmp eax, 8
ja case.default.0x10027a15
jmp dword [eax*4 + 0x10027ea4]
fld dword [edi + 0x84]
fcomp dword [0x10095560]
fnstsw ax
test ah, 0x40
je case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fldln2
fld qword [0x10095480]
fyl2x
fmulp st(1)
fmul qword [0x100954f8]
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.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0xc0]
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0x7c]
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0x88]
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
test al, 7
je 0x10027ac6
mov dword [edi + 0x78], 1
jmp case.default.0x10027a15
mov dword [edi + 0x78], 0
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0x90]
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
mov dword [edi + 0x94], eax
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
mov dword [edi + 0x98], eax
jmp case.default.0x10027a15
mov cl, byte [edx + ebp - 1]
lea eax, [edx - 1]
cmp cl, 0x20
jne 0x10027b36
test eax, eax
mov byte [eax + ebp], 0
je 0x10027b36
mov cl, byte [eax + ebp - 1]
dec eax
cmp cl, 0x20
je 0x10027b24
mov ecx, 5
mov edi, str.ASCII
mov esi, ebp
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10027b8c
mov eax, 5
mov cl, byte [eax + ebp]
test cl, cl
je 0x10027b59
cmp cl, 0x20
jne 0x10027b68
inc eax
cmp eax, 0xa
jl 0x10027b4d
mov edi, dword [esp + 0x40]
jmp case.default.0x10027c45
add eax, ebp
push 0xc7
push eax
mov eax, dword [esp + 0x48]
add eax, 0xc4
push eax
call dword [sym.imp.MSVCRT.dll_strncpy]
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x10027c45
mov ecx, dword [esp + 0x40]
push 0xc7
add ecx, 0xc4
push ebp
push ecx
call dword [sym.imp.MSVCRT.dll_strncpy]
mov edi, dword [esp + 0x4c]
add esp, 0xc
jmp case.default.0x10027c45
cmp eax, 0xa20f
jg 0x10027c22
je 0x10027c0e
cmp eax, 0xa002
jl case.default.0x10027a15
cmp eax, 0xa003
jle 0x10027be9
cmp eax, 0xa20e
jne case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0xa8]
jmp case.default.0x10027c45
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
cmp dword [ebx + 0x104], eax
jge case.default.0x10027a15
mov dword [ebx + 0x104], eax
jmp case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
fstp dword [edi + 0xac]
jmp case.default.0x10027c45
cmp eax, 0xa210
jne case.default.0x10027a15
push esi
push ebp
mov ecx, ebx
call sym.YunImage.fne_protected:_double___thiscall_CxImageJPG::CxExifInfo::ConvertAnyFormat_void___int_
call sub.MSVCRT.dll__ftol
dec eax
cmp eax, 4
ja case.default.0x10027c45
jmp dword [eax*4 + 0x10027ec8]
mov dword [edi + 0xb0], 0x3f800000
jmp case.default.0x10027c45
mov dword [edi + 0xb0], 0x3ec99326
jmp case.default.0x10027c45
mov dword [edi + 0xb0], 0x3d214285
jmp case.default.0x10027c45
mov dword [edi + 0xb0], 0x3825214d
jmp case.default.0x10027c45
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 sym.YunImage.fne_protected:_int___thiscall_CxImageJPG::CxExifInfo::Get16u_void__
test eax, eax
je 0x10027d14
add eax, esi
cmp eax, esi
jb 0x10027d49
cmp eax, ebp
ja 0x10027d49
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
push ecx
push edi
push edx
push esi
push eax
mov ecx, ebx
call sym.YunImage.fne_protected:_bool___thiscall_CxImageJPG::CxExifInfo::ProcessExifDir_unsigned_char___unsigned_char___unsigned_int__struct_CxImageJPG::tag_ExifInfo__const__unsigned_char___const_
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x10027d3d
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10027d3d
mov ebx, dword [esp + 0x3c]
lea edx, [ecx + eax]
cmp edx, ebx
ja 0x10027d3d
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