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

Disassembly:
sub esp, 0x20
xor eax, eax
push ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3c]
push ebp
push esi
cmp eax, 4
push edi
mov ebx, ecx
jle 0x10018b9d
mov edi, str.Maximum_directory_nesting_exceeded__corrupt_exif_header_
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 0x18
mov esi, dword [esp + 0x34]
mov ecx, ebx
push esi
call fcn.10018ab0
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 0x10018bfc
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 0x18
mov edi, dword [esp + 0x40]
mov dword [esp + 0x10], 0
test eax, eax
jle 0x100192ac
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.10018ab0
mov dword [esp + 0x18], eax
lea eax, [ebp + 2]
push eax
mov ecx, ebx
call fcn.10018ab0
lea ecx, [ebp + 4]
mov esi, eax
push ecx
mov ecx, ebx
call fcn.10018b40
lea edx, [esi - 1]
cmp edx, 0xc
jge 0x1001924a
mov ecx, dword [esi*4 + 0x100cd6c4]
imul ecx, eax
cmp ecx, 4
mov dword [esp + 0x14], ecx
jle 0x10018c89
add ebp, 8
mov ecx, ebx
push ebp
call fcn.10018b40
mov ecx, dword [esp + 0x14]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x3c]
cmp edx, ecx
ja 0x1001927b
mov ecx, dword [esp + 0x38]
lea ebp, [eax + ecx]
jmp 0x10018c8c
add ebp, 8
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
lea eax, [edx + ebp]
cmp dword [ecx], eax
jae 0x10018c9d
mov dword [ecx], eax
mov eax, dword [esp + 0x18]
cmp eax, 0x9201
jg 0x10018fb8
je 0x10018f65
cmp eax, 0x202
jg 0x10018e78
je 0x10018e61
add eax, 0xfffffef1
cmp eax, 0xf2
ja case.default.0x10018fd7
xor edx, edx
mov dl, byte [eax + 0x10019364]
jmp dword [edx*4 + 0x10019344]
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 0x10018d00
cmp eax, 0xa005
jne case.default.0x10019207
push ebp
mov ecx, ebx
call fcn.10018b40
cmp eax, 8
jbe case.default.0x10019207
mov ecx, dword [esp + 0x38]
add eax, ecx
cmp eax, ecx
jb 0x10019311
cmp eax, dword [esp + 0x1c]
ja 0x10019311
mov edx, dword [esp + 0x48]
inc edx
push edx
mov edx, dword [esp + 0x48]
push edx
mov edx, dword [esp + 0x44]
push edi
push edx
push ecx
push eax
mov ecx, ebx
call fcn.10018b50
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x10018c10
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
jmp 0x100192ac
push 0x27
lea ecx, [edi + 0x25]
push ebp
push ecx
jmp 0x10018ce5
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
cmp eax, 1
mov dword [edi + 0x6c], eax
jl 0x10018d90
cmp eax, 8
jle case.default.0x10018fd7
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.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
dec eax
cmp eax, 4
ja case.default.0x10018fd7
jmp dword [eax*4 + 0x10019458]
mov dword [edi + 0xbc], 0x3f800000
jmp case.default.0x10018fd7
mov dword [edi + 0xbc], 0x3ec99326
jmp case.default.0x10018fd7
mov dword [edi + 0xbc], 0x3d214285
jmp case.default.0x10018fd7
mov dword [edi + 0xbc], 0x3825214d
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0xb4]
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0xb8]
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x24], eax
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x20], eax
jmp case.default.0x10019207
cmp eax, 0x8827
jg 0x10018f0e
je 0x10018edd
sub eax, 0x829a
je 0x10018ec9
sub eax, 3
je 0x10018eb5
sub eax, 0x585
jne case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
mov dword [edi + 0x9c], eax
jmp case.default.0x10019207
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0x84]
jmp case.default.0x10019207
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0x80]
jmp case.default.0x10019207
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
cmp eax, 0x32
mov dword [edi + 0xa0], eax
jge case.default.0x10019207
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
mov dword [edi + 0xa0], edx
jmp case.default.0x10019207
sub eax, 0x9000
je 0x10018f53
sub eax, 3
je 0x10018f3e
sub eax, 0xff
jne case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
mov dword [edi + 0xa4], eax
jmp case.default.0x10019207
push 0x13
lea eax, [edi + 0x4d]
push ebp
push eax
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
jmp case.default.0x10019207
push 4
push ebp
push edi
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
jmp case.default.0x10019207
fld dword [edi + 0x80]
fcomp dword [0x100cd3a4]
fnstsw ax
test ah, 0x40
je case.default.0x10019207
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fldln2
fld qword [0x100cd408]
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 [0x100cd3f8]
fstp dword [edi + 0x80]
jmp case.default.0x10019207
cmp eax, 0x9286
jg 0x10019171
je 0x100190da
add eax, 0xffff6dfe
cmp eax, 8
ja case.default.0x10018fd7
jmp dword [eax*4 + 0x1001946c]
fld dword [edi + 0x84]
fcomp dword [0x100cd3a4]
fnstsw ax
test ah, 0x40
je case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fldln2
fld qword [0x100cd408]
fyl2x
fmulp st(1)
fmul qword [0x100cd390]
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.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0xc0]
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0x7c]
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0x88]
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
test al, 7
je 0x10019088
mov dword [edi + 0x78], 1
jmp case.default.0x10018fd7
mov dword [edi + 0x78], 0
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0x90]
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
mov dword [edi + 0x94], eax
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
mov dword [edi + 0x98], eax
jmp case.default.0x10018fd7
mov cl, byte [edx + ebp - 1]
lea eax, [edx - 1]
cmp cl, 0x20
jne 0x100190f8
test eax, eax
mov byte [eax + ebp], 0
je 0x100190f8
mov cl, byte [eax + ebp - 1]
dec eax
cmp cl, 0x20
je 0x100190e6
mov ecx, 5
mov edi, str.ASCII
mov esi, ebp
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x1001914e
mov eax, 5
mov cl, byte [eax + ebp]
test cl, cl
je 0x1001911b
cmp cl, 0x20
jne 0x1001912a
inc eax
cmp eax, 0xa
jl 0x1001910f
mov edi, dword [esp + 0x40]
jmp case.default.0x10019207
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.0x10019207
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.0x10019207
cmp eax, 0xa20f
jg 0x100191e4
je 0x100191d0
cmp eax, 0xa002
jl case.default.0x10018fd7
cmp eax, 0xa003
jle 0x100191ab
cmp eax, 0xa20e
jne case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0xa8]
jmp case.default.0x10019207
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
cmp dword [ebx + 0x104], eax
jge case.default.0x10018fd7
mov dword [ebx + 0x104], eax
jmp case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
fstp dword [edi + 0xac]
jmp case.default.0x10019207
cmp eax, 0xa210
jne case.default.0x10018fd7
push esi
push ebp
mov ecx, ebx
call fcn.100194b0
call sub.MSVCRT.dll__ftol
dec eax
cmp eax, 4
ja case.default.0x10019207
jmp dword [eax*4 + 0x10019490]
mov dword [edi + 0xb0], 0x3f800000
jmp case.default.0x10019207
mov dword [edi + 0xb0], 0x3ec99326
jmp case.default.0x10019207
mov dword [edi + 0xb0], 0x3d214285
jmp case.default.0x10019207
mov dword [edi + 0xb0], 0x3825214d
jmp case.default.0x10019207
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 0x18
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 0x18
push ecx
mov ecx, ebx
call fcn.10018ab0
test eax, eax
je 0x100192dc
add eax, esi
cmp eax, esi
jb 0x10019311
cmp eax, ebp
ja 0x10019311
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
inc ecx
push ecx
mov ecx, dword [esp + 0x40]
push edx
push edi
push ecx
push esi
push eax
mov ecx, ebx
call fcn.10018b50
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x10019305
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10019305
mov ebx, dword [esp + 0x3c]
lea edx, [ecx + eax]
cmp edx, ebx
ja 0x10019305
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 0x18
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 0x18