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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x487c7f
push eax
mov dword fs:[0], esp
sub esp, 0x90
push ebx
mov bl, byte [esp + 0xa8]
push ebp
cmp bl, 0xc2
mov ebx, dword [esp + 0xa8]
push esi
mov esi, ecx
sete al
mov byte [esi + 0x38], al
mov ecx, dword [ebx]
mov ecx, dword [ecx + 4]
add ecx, ebx
call fcn.0047cb20
mov edx, dword [ebx]
mov ecx, dword [edx + 4]
add ecx, ebx
movzx ebp, ax
call fcn.0047ca10
movzx eax, al
cmp eax, 8
je 0x476d09
push 0x19
xor esi, esi
push str.Only_8_bit_data_supported
lea ecx, [esp + 0x1c]
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], esi
mov byte [esp + 0x20], 0
call fcn.004018d0
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0xa8], esi
call fcn.00474a90
push 0x49b3fc
lea ecx, [esp + 0x34]
push ecx
mov dword [esp + 0x38], 0x49605c
call fcn.0046003c
mov edx, dword [ebx]
mov ecx, dword [edx + 4]
add ecx, ebx
call fcn.0047cb20
movzx eax, ax
mov dword [esi + 0x28], eax
mov ecx, dword [ebx]
mov ecx, dword [ecx + 4]
add ecx, ebx
call fcn.0047cb20
movzx edx, ax
mov dword [esi + 0x24], edx
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call fcn.0047ca10
movzx eax, al
cmp eax, 1
mov dword [esi + 0x3c], eax
je 0x476d87
cmp eax, 3
je 0x476d87
push str.JFIF_only_supports_1_and_3_component_streams
lea ecx, [esp + 0x18]
call fcn.00401ca0
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x34]
mov dword [esp + 0xa8], 1
call fcn.00474a90
push 0x49b3fc
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0x38], 0x49605c
call fcn.0046003c
movzx eax, byte [esp + 0xb0]
mov dword [esi + 0x2c], eax
mov al, byte [esi + 0x1f]
test al, al
push edi
je 0x476f2c
push str._Start_Of_Frame
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
push str.__Length:
push 0x21f1df8
call fcn.004266b0
add esp, 8
test eax, eax
jne 0x476ddc
xor edx, edx
jmp 0x476de3
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
add edx, eax
mov ecx, dword [edx + 0x10]
and ecx, 0xfffff3ff
or ecx, 0x200
mov dword [edx + 0x10], ecx
push ebp
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
push str.__Precision:
push 0x21f1df8
call fcn.004266b0
add esp, 8
test eax, eax
jne 0x476e29
xor ecx, ecx
jmp 0x476e30
mov edx, dword [eax]
mov ecx, dword [edx + 4]
add ecx, eax
mov edx, dword [ecx + 0x10]
and edx, 0xfffff3ff
or edx, 0x200
mov dword [ecx + 0x10], edx
push 8
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
push str.__Height:
push 0x21f1df8
call fcn.004266b0
add esp, 8
test eax, eax
jne 0x476e77
xor ecx, ecx
jmp 0x476e7e
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov edx, dword [ecx + 0x10]
and edx, 0xfffff3ff
or edx, 0x200
mov dword [ecx + 0x10], edx
mov ecx, dword [esi + 0x28]
push ecx
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
push str.__Width:
push 0x21f1df8
call fcn.004266b0
add esp, 8
test eax, eax
jne 0x476ec7
xor ecx, ecx
jmp 0x476ece
mov edx, dword [eax]
mov ecx, dword [edx + 4]
add ecx, eax
mov edx, dword [ecx + 0x10]
and edx, 0xfffff3ff
or edx, 0x200
mov dword [ecx + 0x10], edx
mov ecx, dword [esi + 0x24]
push ecx
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
mov edx, dword [esi + 0x3c]
push edx
push str.__Component_Count:
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
mov eax, dword [esi + 0x3c]
lea ecx, [eax + eax*2 + 8]
cmp ebp, ecx
je 0x476f75
push str.Invalid_Frame_Size
lea ecx, [esp + 0x1c]
call fcn.00401ca0
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x38]
mov dword [esp + 0xac], 2
call fcn.00474a90
push 0x49b3fc
lea eax, [esp + 0x38]
push eax
mov dword [esp + 0x3c], 0x49605c
call fcn.0046003c
xor ebp, ebp
cmp eax, ebp
mov dword [esi + 0x30], ebp
mov dword [esi + 0x34], ebp
mov dword [esp + 0x10], ebp
ja 0x477016
mov ecx, dword [esi + 0x34]
mov ebx, dword [esi + 0x28]
shl ecx, 3
lea eax, [ecx + ebx - 1]
xor edx, edx
div ecx
mov edi, dword [esi + 0x30]
mov dword [esi + 0x5c], ecx
mov ecx, dword [esi + 0x24]
shl edi, 3
xor edx, edx
push ebx
push ecx
mov dword [esi + 0x60], edi
mov dword [esi + 0x54], eax
lea eax, [edi + ecx - 1]
div edi
mov ecx, dword [esi + 0x48]
mov dword [esi + 0x58], eax
call fcn.00479190
mov al, byte [esi + 0x1f]
test al, al
je 0x476fec
push 0x495fb8
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
mov ecx, dword [esp + 0xa0]
pop edi
mov byte [esi + 0x1e], 1
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x9c
ret 8
mov ebx, dword [esp + 0xb0]
mov ebp, dword [esp + 0x10]
mov ecx, dword [ebx]
mov ecx, dword [ecx + 4]
add ecx, ebx
call fcn.0047ca10
movzx edi, al
mov al, byte [esi + 0x70]
test al, al
mov dword [esp + 0x14], edi
je 0x47704a
cmp dword [esi + 0x3c], 1
jne 0x47703f
cmp edi, 1
jne 0x4771b3
lea edx, [ebp + 1]
cmp edi, edx
jne 0x4771f1
mov eax, dword [esi + 0x44]
mov dword [eax + ebp*4], edi
mov ecx, dword [ebx]
mov ecx, dword [ecx + 4]
add ecx, ebx
call fcn.0047ca10
imul edi, edi, 0x4c
mov ecx, dword [esi + 0x40]
movzx ebp, al
mov edx, ebp
shr edx, 4
push edx
add ecx, edi
call fcn.0047b490
mov ecx, dword [esi + 0x40]
and ebp, 0xf
push ebp
add ecx, edi
call fcn.0047b520
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call fcn.0047ca10
movzx ebx, al
cmp ebx, 4
jae 0x47722f
mov edx, dword [esi + 0x14]
mov ecx, ebx
imul ecx, ecx, 0x388
add ecx, edx
push ecx
mov ecx, dword [esi + 0x40]
add ecx, edi
call fcn.00479ab0
mov edx, dword [esi + 0x40]
mov ecx, dword [edi + edx + 4]
lea eax, [edi + edx]
cmp ecx, dword [esi + 0x30]
jbe 0x4770c2
mov dword [esi + 0x30], ecx
mov eax, dword [eax + 8]
cmp eax, dword [esi + 0x34]
jbe 0x4770cd
mov dword [esi + 0x34], eax
mov al, byte [esi + 0x1f]
test al, al
je 0x47719a
mov eax, dword [esp + 0x14]
push eax
push str.___Component
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov ecx, eax
call fcn.00473e80
mov ebp, eax
push 0xa
mov ecx, ebp
call fcn.004268c0
mov ecx, ebp
call fcn.0040c6f0
mov ecx, dword [esi + 0x40]
mov eax, dword [edi + ecx + 4]
push eax
push str.___Horizontal_Frequency:
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov ecx, eax
call fcn.00473e80
mov ebp, eax
push 0xa
mov ecx, ebp
call fcn.004268c0
mov ecx, ebp
call fcn.0040c6f0
mov edx, dword [esi + 0x40]
mov edi, dword [edi + edx + 8]
push edi
push str.___Vertical_Frequency:
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
push ebx
push str.___Quantization_Table:
push 0x21f1df8
call fcn.004266b0
add esp, 8
mov ecx, eax
call fcn.00473e80
mov edi, eax
push 0xa
mov ecx, edi
call fcn.004268c0
mov ecx, edi
call fcn.0040c6f0
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x3c]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jb 0x47700b
jmp 0x476f89
push str.Component_ID_not_1
lea ecx, [esp + 0x1c]
call fcn.00401ca0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x38]
mov dword [esp + 0xac], 3
call fcn.00474a90
push 0x49b3fc
lea ecx, [esp + 0x38]
push ecx
mov dword [esp + 0x3c], 0x49605c
call fcn.0046003c
push str.Invalid_Component_ID_or_ID_out_of_order
lea ecx, [esp + 0x1c]
call fcn.00401ca0
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x38]
mov dword [esp + 0xac], 4
call fcn.00474a90
push 0x49b3fc
lea eax, [esp + 0x38]
push eax
mov dword [esp + 0x3c], 0x49605c
call fcn.0046003c
push 0x1c
push str.Bad_Quantization_Table_Index
lea ecx, [esp + 0x64]
mov dword [esp + 0x7c], 0xf
mov dword [esp + 0x78], 0
mov byte [esp + 0x68], 0
call fcn.004018d0
lea ecx, [esp + 0x5c]
push ecx
lea ecx, [esp + 0x7c]
mov dword [esp + 0xac], 5
call fcn.00474a90
push 0x49b3fc
lea edx, [esp + 0x7c]
push edx
mov dword [esp + 0x80], 0x49605c
call fcn.0046003c
int3