Function at 0x413a50
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1ec
mov ebx, eax
mov esi, edx
mov dword [esp + 0x7c], 1
mov dword [esp + 0x78], 1
mov dword [esp + 0x74], 4
mov dword [esp + 4], 0x10
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov dword [esp + 0x40], eax
test eax, eax
je 0x414590
mov eax, dword [esp + 0x40]
mov dword [eax], 0
mov dword [esp + 0x138], 0
mov dword [esp + 0x148], 0
mov dword [esp + 0x1d8], ebx
mov dword [esp + 0x1d0], ebx
add ebx, esi
mov dword [esp + 0x1dc], ebx
mov dword [esp + 0x1d4], ebx
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x80], 8
mov dword [esp + 4], 0x4818
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov ebx, eax
test eax, eax
je 0x41468d
lea eax, [esp + 0x128]
mov dword [ebx], eax
mov dword [ebx + 0x480c], 0x40bca0
mov dword [ebx + 0x4810], 0x40c510
mov dword [ebx + 0x4814], 0x40c410
mov dword [ebx + 0x47e4], 0
mov dword [ebx + 0x47e8], 0xffffffff
mov byte [ebx + 0x47c4], 0xff
call fcn.0040fbd0
inc al
jne 0x413d20
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0xff
je 0x413b62
mov edx, dword [esp + 0x1dc]
mov ecx, dword [esp + 0x1d8]
cmp al, 0xd8
jne 0x413d2e
mov dword [esp + 0x1d0], ecx
mov dword [esp + 0x1d4], edx
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov dword [esp + 4], 0x4818
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov dword [esp + 0x3c], eax
test eax, eax
je 0x41468d
mov eax, dword [esp + 0x3c]
lea esi, [esp + 0x128]
mov dword [eax], esi
mov dword [eax + 0x480c], 0x40bca0
mov dword [eax + 0x4810], 0x40c510
mov dword [eax + 0x4814], 0x40c410
mov dword [esp + 0x130], 0
mov dword [eax + 0x46cc], 0
mov dword [eax + 0x46d0], 0
mov dword [eax + 0x4714], 0
mov dword [eax + 0x4718], 0
mov dword [eax + 0x475c], 0
mov dword [eax + 0x4760], 0
mov dword [eax + 0x47a4], 0
mov dword [eax + 0x47a8], 0
mov dword [eax + 0x4804], 0
mov dword [eax + 0x47e4], 0
mov dword [eax + 0x47e8], 0xffffffff
mov byte [eax + 0x47c4], 0xff
mov eax, esi
call fcn.0040fbd0
inc al
jne 0x413f84
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0xff
je 0x413c78
cmp al, 0xd8
jne 0x413f84
lea eax, [esp + 0x128]
call fcn.0040fbd0
inc al
jne 0x4143ba
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0xff
je 0x413ca4
mov esi, eax
and esi, 0xff
mov dword [esp + 0x2c], esi
lea eax, [esi - 0xc0]
cmp eax, 2
jbe 0x4145d9
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
mov edx, eax
mov eax, ebx
call fcn.00410330
test eax, eax
je 0x414427
mov al, byte [ebx + 0x47c4]
cmp al, 0xff
je 0x414240
mov byte [ebx + 0x47c4], 0xff
and eax, 0xff
lea edx, [eax - 0xc0]
cmp edx, 2
ja 0x413cd7
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax]
jmp 0x4145e0
mov edx, dword [esp + 0x1dc]
mov ecx, dword [esp + 0x1d8]
mov dword [0x46f094], str.no_SOI
mov dword [esp + 0x1d0], ecx
mov dword [esp + 0x1d4], edx
mov dword [esp], ebx
call sub.msvcrt.dll_free
xor ebx, ebx
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, byte [ebx + 0x468378]
jne 0x413e8e
inc ebx
cmp ebx, 8
jne 0x413d50
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1dc]
mov dword [esp + 0x1d4], eax
lea eax, [esp + 0x128]
mov dword [esp + 0xa8], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
call fcn.004254f0
test eax, eax
je 0x414180
mov eax, dword [esp + 0xb8]
cmp eax, 7
jg 0x4142e9
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x48], eax
mov dword [esp + 0xb4], 0
mov esi, dword [esp + 0xa8]
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 4]
mov dword [esp + 0x30], eax
mov ebp, dword [esi]
cmp ebx, 4
je 0x4143c8
cmp dword [esp + 0x80], 8
je 0x414387
mov eax, dword [esp + 0x30]
imul eax, ebp
shl eax, 3
jne 0x413e11
mov eax, 1
mov dword [esp + 4], eax
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov edx, eax
test eax, eax
je 0x414633
mov eax, dword [esp + 0x30]
mov edi, eax
test eax, eax
jle 0x414341
mov eax, ebx
imul eax, ebp
add eax, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
lea eax, [ebp*8]
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], edx
xor ecx, ecx
lea eax, [ebx*8 - 6]
mov dword [esp + 0x54], eax
mov dword [esp + 0x3c], esi
mov ebx, ecx
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x54]
cmp esi, 0x19
ja case.0x413e87.3
jmp dword [esi*4 + 0x4682f0]
mov dword [0x46f094], 0x4682bd
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1dc]
mov dword [esp + 0x1d4], eax
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x42
je 0x414081
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1dc]
mov dword [esp + 0x1d4], eax
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x47
je 0x413fce
mov dword [0x46f094], str.unknown_image_type
mov ebp, 0x24
mov eax, str.unknown_image_type
mov edi, 1
mov ebx, 1
lea esi, [esp + 0xa8]
mov dword [esp + 0x24], esi
mov dword [esp + 0xa8], 2
mov dword [esp + 0xac], str.loading_image_from_memory_failed
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x24]
call fcn.00411500
mov dword [esp + 4], 1
mov dword [esp], ebp
call sub.msvcrt.dll_calloc
mov ebp, eax
test eax, eax
je 0x414590
mov esi, dword [esp + 0x40]
mov dword [esi], ebp
lea eax, [ebx*4]
mov dword [esi + 4], eax
mov dword [esi + 8], ebx
mov dword [esi + 0xc], edi
mov eax, esi
add esp, 0x1ec
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [0x46f094], str.no_SOI
mov ecx, dword [esp + 0x130]
mov ebp, 0x24
mov edi, 1
mov ebx, 1
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
mov edx, ecx
mov esi, dword [esp + 0x3c]
mov eax, esi
call fcn.00425450
mov dword [esp], esi
call sub.msvcrt.dll_free
mov eax, dword [0x46f094]
jmp 0x413f21
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x49
jne 0x413ef8
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x46
jne 0x413ef8
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x38
jne 0x413ef8
lea eax, [esp + 0x128]
call fcn.0040fbd0
xor edx, edx
mov dl, al
cmp al, 0x39
je 0x414027
cmp edx, 0x37
jne 0x413ef8
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x61
jne 0x413ef8
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1dc]
mov dword [esp + 0x1d4], eax
lea eax, [esp + 0x74]
mov dword [esp], eax
lea ecx, [esp + 0x78]
lea edx, [esp + 0x7c]
lea eax, [esp + 0x128]
call fcn.004264e0
mov ebp, eax
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
jmp 0x41413f
lea eax, [esp + 0x128]
call fcn.0040fbd0
cmp al, 0x4d
jne 0x413ec8
lea eax, [esp + 0x128]
call fcn.00410a80
lea eax, [esp + 0x128]
call fcn.00410950
lea eax, [esp + 0x128]
call fcn.00410950
lea eax, [esp + 0x128]
call fcn.00410a80
lea eax, [esp + 0x128]
call fcn.00410a80
cmp eax, 0xc
je 0x41440d
mov edx, dword [esp + 0x1d8]
cmp eax, 0x28
je 0x4143ce
cmp eax, 0x38
je 0x4143ce
cmp eax, 0x6c
je 0x4143ce
mov dword [esp + 0x1d0], edx
cmp eax, 0x7c
mov eax, dword [esp + 0x1dc]
jne 0x413edd
mov dword [esp + 0x1d4], eax
lea eax, [esp + 0x74]
mov dword [esp], eax
lea ecx, [esp + 0x78]
lea edx, [esp + 0x7c]
lea eax, [esp + 0x128]
call fcn.00427700
mov ebp, eax
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
test ebp, ebp
jne 0x413f61
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
mov eax, dword [0x46f094]
mov edx, edi
imul edx, ebx
lea ebp, [edx*4 + 0x20]
test ebp, ebp
jne 0x413f21
mov ebp, 1
jmp 0x413f21
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x414193
mov dword [esp], eax
call sub.msvcrt.dll_free
mov edi, 1
mov ebx, 1
xor edx, edx
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x4141b6
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0xac]
test eax, eax
je 0x4141c9
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x48]
test eax, eax
je 0x414152
cmp dword [esp + 0x80], 8
je 0x4143b1
mov esi, edi
imul esi, ebx
shl esi, 2
mov eax, esi
jne 0x4141f0
mov eax, 1
mov dword [esp + 4], eax
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov ebp, eax
test eax, eax
je 0x41468d
test esi, esi
jle 0x41422f
mov ecx, dword [esp + 0x48]
mov eax, ecx
mov edx, ebp
add esi, esi
add ecx, esi
mov esi, ecx
lea esi, [esi]
xor ecx, ecx
mov cl, byte [eax + 1]
mov byte [edx], cl
add eax, 2
inc edx
cmp eax, esi
jne 0x414220
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x413f61
mov esi, dword [ebx]
mov eax, esi
call fcn.0040fbd0
inc al
jne 0x414270
mov eax, esi
call fcn.0040fbd0
cmp al, 0xff
je 0x41424d
and eax, 0xff
jmp 0x413d02
mov eax, dword [esi + 0x10]
test eax, eax
je 0x41428b
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call dword [esi + 0x18]
test eax, eax
je 0x41429d
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4142bd
mov eax, dword [esi + 0xac]
cmp dword [esi + 0xa8], eax
jae 0x4143e1
mov eax, esi
call fcn.0040fbd0
inc al
jne 0x414270
mov eax, esi
call fcn.0040fbd0
cmp al, 0xff
je 0x4142a8
and eax, 0xff
jmp 0x413d02
mov ebp, 0x24
mov edi, 1
mov ebx, 1
mov dword [0x46f094], str.no_SOF
mov ecx, dword [esi + 8]
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
jmp 0x413faf
mov dword [esp + 0x80], eax
jmp 0x413dc0
mov ecx, ebp
dec ecx
js case.0x413e87.3
mov si, word [edx]
mov word [eax], si
mov si, word [edx + 2]
mov word [eax + 2], si
mov si, word [edx + 4]
mov word [eax + 4], si
dec ecx
add edx, 8
add eax, 6
cmp ecx, 0xffffffff
jne 0x4142fa
inc ebx
mov esi, dword [esp + 0x38]
add dword [esp + 0x28], esi
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x30]
cmp ebx, eax
jne 0x413e72
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x414435
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esi + 0xc], 4
mov ebp, dword [esi]
mov edi, dword [esi + 4]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x48], edx
mov ebx, ebp
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x78], edi
mov eax, dword [esi + 8]
mov dword [esp + 0x74], eax
jmp 0x4141a3
mov dword [esp], eax
mov ecx, ebp
mov edx, ebx
mov eax, dword [esp + 0x48]
call fcn.00426f80
mov dword [esp + 0x48], eax
mov dword [esi + 0xc], 4
test eax, eax
je 0x4145c0
mov ebp, dword [esi]
mov edi, dword [esi + 4]
jmp 0x414371
mov ebp, dword [esp + 0x48]
jmp 0x413f61
mov eax, 0xff
mov ebx, dword [esp + 0x3c]
jmp 0x413cd7
mov edi, dword [esp + 0x30]
jmp 0x414371
mov dword [esp + 0x1d0], edx
mov eax, dword [esp + 0x1dc]
jmp 0x414113
mov eax, dword [esp + 0x3c]
mov esi, dword [eax]
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov eax, ebx
imul eax, edi
lea ebp, [eax*4 + 0x20]
test ebp, ebp
jne 0x4142cc
mov ebp, 1
jmp 0x4142cc
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1dc]
jmp 0x414113
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
jmp 0x413f95
mov dword [esi + 0xc], 4
mov dword [esp + 0x48], edx
jmp 0x414371
mov esi, ebp
dec esi
mov dword [esp + 0x4c], esi
js case.0x413e87.3
xor esi, esi
mov si, word [edx]
lea ecx, [esi + esi*8]
add ecx, ecx
add ecx, esi
lea esi, [esi + ecx*4]
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 2]
lea ecx, [esi + esi*8]
lea ecx, [esi + ecx*4]
add ecx, ecx
add ecx, esi
add ecx, ecx
mov esi, dword [esp + 0x50]
add esi, ecx
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 4]
lea ecx, [esi + esi]
add ecx, esi
add ecx, ecx
add ecx, esi
lea ecx, [esi + ecx*4]
mov esi, dword [esp + 0x50]
add ecx, esi
sar ecx, 8
mov word [eax], cx
mov cx, word [edx + 6]
mov word [eax + 2], cx
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 8
add eax, 4
inc esi
jne 0x414452
jmp case.0x413e87.3
mov esi, ebp
dec esi
mov dword [esp + 0x4c], esi
js case.0x413e87.3
xor esi, esi
mov si, word [edx]
lea ecx, [esi + esi*8]
add ecx, ecx
add ecx, esi
lea esi, [esi + ecx*4]
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 2]
lea ecx, [esi + esi*8]
lea ecx, [esi + ecx*4]
add ecx, ecx
add ecx, esi
add ecx, ecx
mov esi, dword [esp + 0x50]
add esi, ecx
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 4]
lea ecx, [esi + esi]
add ecx, esi
add ecx, ecx
add ecx, esi
lea ecx, [esi + ecx*4]
mov esi, dword [esp + 0x50]
add ecx, esi
sar ecx, 8
mov word [eax], cx
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 8
add eax, 2
inc esi
jne 0x4144ca
jmp case.0x413e87.3
lea ecx, [ebp - 1]
mov esi, ecx
test ecx, ecx
js case.0x413e87.3
mov dword [esp + 0x4c], ecx
mov cx, word [edx]
mov word [eax], cx
mov cx, word [edx + 2]
mov word [eax + 2], cx
mov cx, word [edx + 4]
mov word [eax + 4], cx
mov word [eax + 6], 0xffff
dec esi
add edx, 6
add eax, 8
cmp esi, 0xffffffff
jne 0x41453e
mov ecx, dword [esp + 0x4c]
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
cmp ebx, esi
jne 0x414530
jmp 0x414339
mov dword [esp + 0x128], 1
mov dword [esp + 0x12c], 0x468040
mov dword [esp + 0x130], 0x468057
lea eax, [esp + 0x128]
mov dword [esp], eax
call fcn.00411650
mov eax, dword [0x46f094]
mov ebp, 0x24
mov edi, 1
mov ebx, 1
jmp 0x413f21
lea ebx, [esp + 0x128]
xor eax, eax
cmp dword [esp + 0x2c], 0xc2
sete al
mov esi, dword [esp + 0x3c]
mov dword [esi + 0x47cc], eax
mov eax, ebx
call fcn.0040fbd0
mov esi, eax
mov eax, ebx
call fcn.0040fbd0
mov dl, al
mov eax, esi
and eax, 0xff
shl eax, 8
and edx, 0xff
lea edi, [eax + edx]
cmp edi, 0xa
jg 0x414670
mov dword [0x46f094], str.bad_SOF_len
mov ecx, dword [ebx + 8]
jmp 0x413f95
mov dword [esp + 0x98], 1
mov dword [esp + 0x9c], 0x468040
mov dword [esp + 0xa0], 0x468057
lea eax, [esp + 0x98]
mov dword [esp], eax
call fcn.00411650
lea esi, [esi]
lea esi, [esi]
mov eax, ebx
call fcn.0040fbd0
cmp al, 8
je 0x4146bd
mov dword [0x46f094], str.only_8_bit
mov ecx, dword [ebx + 8]
jmp 0x413f95
mov dword [esp + 0xa8], 1
mov dword [esp + 0xac], 0x468040
mov dword [esp + 0xb0], 0x468057
lea eax, [esp + 0xa8]
mov dword [esp], eax
call fcn.00411650
mov eax, ebx
call fcn.0040fbd0
mov esi, eax
mov eax, ebx
call fcn.0040fbd0
mov dl, al
mov eax, esi
and eax, 0xff
shl eax, 8
and edx, 0xff
add eax, edx
mov dword [ebx + 4], eax
jne 0x414a36
mov dword [0x46f094], str.no_header_height
mov ecx, dword [ebx + 8]
jmp 0x413f95
lea ecx, [ebp - 1]
mov dword [esp + 0x4c], ecx
test ecx, ecx
js case.0x413e87.3
mov dword [esp + 0x58], ebx
xor esi, esi
mov si, word [edx]
lea ebx, [esi + esi*8]
add ebx, ebx
add ebx, esi
lea esi, [esi + ebx*4]
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 2]
lea ebx, [esi + esi*8]
lea ebx, [esi + ebx*4]
add ebx, ebx
add ebx, esi
add ebx, ebx
mov esi, dword [esp + 0x50]
add esi, ebx
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 4]
lea ebx, [esi + esi]
add ebx, esi
add ebx, ebx
add ebx, esi
lea ebx, [esi + ebx*4]
mov esi, dword [esp + 0x50]
add ebx, esi
sar ebx, 8
mov word [eax], bx
mov word [eax + 2], 0xffff
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 6
add eax, 4
inc esi
jne 0x41470f
mov ebx, dword [esp + 0x58]
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x30], ebx
jne 0x4146ff
jmp 0x414339
lea ecx, [ebp - 1]
mov esi, ecx
test ecx, ecx
js case.0x413e87.3
mov dword [esp + 0x4c], ecx
mov cx, word [edx]
mov word [eax], cx
dec esi
add edx, 4
add eax, 2
cmp esi, 0xffffffff
jne 0x4147b0
mov ecx, dword [esp + 0x4c]
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x30], ebx
jne 0x4147a2
jmp 0x414339
lea ecx, [ebp - 1]
mov dword [esp + 0x4c], ecx
test ecx, ecx
js case.0x413e87.3
mov si, word [edx]
mov word [eax + 4], si
mov word [eax + 2], si
mov word [eax], si
mov word [eax + 6], 0xffff
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 2
add eax, 8
inc esi
jne 0x4147f9
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
cmp ebx, esi
jne 0x4147ed
jmp 0x414339
lea ecx, [ebp - 1]
mov dword [esp + 0x4c], ecx
test ecx, ecx
js case.0x413e87.3
mov si, word [edx]
mov word [eax + 4], si
mov word [eax + 2], si
mov word [eax], si
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 2
add eax, 6
inc esi
jne 0x414853
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
cmp ebx, esi
jne 0x414847
jmp 0x414339
lea ecx, [ebp - 1]
mov esi, ecx
test ecx, ecx
js case.0x413e87.3
mov dword [esp + 0x4c], ecx
mov cx, word [edx]
mov word [eax], cx
mov word [eax + 2], 0xffff
dec esi
add edx, 2
add eax, 4
cmp esi, 0xffffffff
jne 0x4148a9
mov ecx, dword [esp + 0x4c]
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
cmp ebx, esi
jne 0x41489b
jmp 0x414339
lea ecx, [ebp - 1]
mov dword [esp + 0x4c], ecx
test ecx, ecx
js case.0x413e87.3
mov si, word [edx]
mov word [eax + 4], si
mov word [eax + 2], si
mov word [eax], si
mov si, word [edx + 2]
mov word [eax + 6], si
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 4
add eax, 8
inc esi
jne 0x4148fa
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x30], ebx
jne 0x4148ee
jmp 0x414339
lea ecx, [ebp - 1]
mov dword [esp + 0x4c], ecx
test ecx, ecx
js case.0x413e87.3
mov si, word [edx]
mov word [eax + 4], si
mov word [eax + 2], si
mov word [eax], si
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 4
add eax, 6
inc esi
jne 0x414954
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
cmp ebx, esi
jne 0x414948
jmp 0x414339
lea ecx, [ebp - 1]
mov dword [esp + 0x4c], ecx
test ecx, ecx
js case.0x413e87.3
mov dword [esp + 0x58], ebx
xor esi, esi
mov si, word [edx]
lea ebx, [esi + esi*8]
add ebx, ebx
add ebx, esi
lea esi, [esi + ebx*4]
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 2]
lea ebx, [esi + esi*8]
lea ebx, [esi + ebx*4]
add ebx, ebx
add ebx, esi
add ebx, ebx
mov esi, dword [esp + 0x50]
add esi, ebx
mov dword [esp + 0x50], esi
xor esi, esi
mov si, word [edx + 4]
lea ebx, [esi + esi]
add ebx, esi
add ebx, ebx
add ebx, esi
lea ebx, [esi + ebx*4]
mov esi, dword [esp + 0x50]
add ebx, esi
sar ebx, 8
mov word [eax], bx
dec dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
add edx, 6
add eax, 2
inc esi
jne 0x4149ac
mov ebx, dword [esp + 0x58]
inc ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
add dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x30], ebx
jne 0x41499c
jmp 0x414339
mov eax, ebx
call fcn.004101f0
mov dword [ebx], eax
test eax, eax
jne 0x414a55
mov dword [0x46f094], str.0_width
mov ecx, dword [ebx + 8]
jmp 0x413f95
mov eax, ebx
call fcn.0040fbd0
mov esi, eax
and esi, 0xff
cmp al, 3
je 0x414a84
cmp esi, 1
je 0x414ac6
cmp esi, 4
je 0x414abf
mov dword [0x46f094], str.bad_component_count
mov ecx, dword [ebx + 8]
jmp 0x413f95
mov ecx, 3
mov dword [ebx + 8], ecx
mov eax, dword [esp + 0x3c]
add eax, 0x46c8
xor edx, edx
xor ebp, ebp
mov dword [eax], ebp
mov dword [eax + 0xc], ebp
inc edx
add eax, 0x48
cmp esi, edx
jg 0x414a97
lea eax, [esi + esi*2]
add eax, 8
cmp eax, edi
je 0x414acd
mov dword [0x46f094], str.bad_SOF_len
jmp 0x413f95
mov ecx, 4
jmp 0x414a89
mov ecx, 1
jmp 0x414a89
mov ebp, dword [esp + 0x3c]
xor edi, edi
mov dword [ebp + 0x47ec], edi
lea eax, [ebp + 0x469c]
mov dword [esp + 0x58], eax
mov edi, eax
xor esi, esi
jmp 0x414b3a
mov eax, ebx
call fcn.0040fbd0
xor edx, edx
mov dl, al
sar edx, 4
mov dword [edi + 4], edx
je 0x4167e0
cmp edx, 4
jg 0x4167e0
mov dl, al
and edx, 0xf
and eax, 0xf
mov dword [edi + 8], eax
dec edx
cmp dl, 3
ja 0x4167ce
mov eax, ebx
call fcn.0040fbd0
and eax, 0xff
mov dword [edi + 0xc], eax
add edi, 0x48
cmp eax, 3
jg 0x4167bc
inc esi
mov ecx, dword [ebx + 8]
cmp esi, ecx
jge 0x414b69
mov eax, ebx
call fcn.0040fbd0
and eax, 0xff
mov dword [edi], eax
cmp dword [ebx + 8], 3
jne 0x414ae9
xor edx, edx
mov dl, byte [esi + 0x468380]
cmp eax, edx
jne 0x414ae9
inc dword [ebp + 0x47ec]
jmp 0x414ae9
mov edx, dword [ebx + 4]
mov dword [esp + 0x34], edx
mov eax, dword [ebx]
mov dword [esp + 0x38], eax
xor esi, esi
mov dword [esp], esi
call fcn.0040fb40
test eax, eax
je 0x414d15
mov eax, dword [esp + 0x3c]
lea ebp, [eax + 0x46a0]
mov eax, ebp
mov edi, 1
mov dword [esp + 0x24], 1
xor ebx, ebx
cmp ecx, ebx
jle 0x414bc2
mov edx, dword [eax]
cmp dword [esp + 0x24], edx
jge 0x414bb3
mov dword [esp + 0x24], edx
mov edx, dword [eax + 4]
cmp edi, edx
jge 0x414bbc
mov edi, edx
inc ebx
add eax, 0x48
jmp 0x414ba3
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x4684], eax
mov dword [ebx + 0x4688], edi
shl eax, 3
mov dword [ebx + 0x4694], eax
lea esi, [edi*8]
mov dword [ebx + 0x4698], esi
mov edx, dword [esp + 0x38]
mov dword [esp + 0x28], eax
lea eax, [edx + eax - 1]
xor edx, edx
div dword [esp + 0x28]
mov dword [esp + 0x48], eax
mov dword [ebx + 0x468c], eax
mov edx, dword [esp + 0x34]
lea eax, [edx + esi - 1]
xor edx, edx
div esi
mov dword [esp + 0x4c], eax
mov dword [ebx + 0x4690], eax
mov esi, ebp
xor ebx, ebx
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x50], eax
lea eax, [edi - 1]
mov dword [esp + 0x54], eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0x5c], ecx
jmp 0x414c47
inc dword [esp + 0x28]
add esi, 0x48
mov ecx, dword [esp + 0x28]
cmp dword [esp + 0x5c], ecx
jle 0x4165ad
mov ecx, dword [esi]
mov eax, dword [esp + 0x38]
imul eax, ecx
mov ebx, dword [esp + 0x50]
add eax, ebx
xor edx, edx
div dword [esp + 0x24]
mov dword [esi + 0x18], eax
mov ebp, dword [esi + 4]
mov eax, dword [esp + 0x34]
imul eax, ebp
mov ebx, dword [esp + 0x54]
add eax, ebx
xor edx, edx
div edi
mov dword [esi + 0x1c], eax
mov ebx, dword [esp + 0x48]
imul ebx, ecx
lea eax, [ebx*8]
mov dword [esp + 0x44], eax
mov dword [esi + 0x20], eax
mov ecx, dword [esp + 0x4c]
imul ebp, ecx
lea edx, [ebp*8]
mov dword [esi + 0x24], edx
xor ecx, ecx
mov dword [esi + 0x38], ecx
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], ecx
mov ecx, 0xf
mov dword [esp + 0x60], edx
call fcn.004118b0
mov dword [esi + 0x2c], eax
test eax, eax
mov edx, dword [esp + 0x60]
je 0x414d24
add eax, 0xf
and eax, 0xfffffff0
mov dword [esi + 0x28], eax
cmp dword [esp + 0x2c], 0xc2
jne 0x414c40
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x40], ebp
mov dword [esp], 0xf
mov ecx, 2
mov eax, dword [esp + 0x44]
call fcn.00411940
mov dword [esi + 0x30], eax
test eax, eax
je 0x414d24
add eax, 0xf
and eax, 0xfffffff0
mov dword [esi + 0x38], eax
jmp 0x414c40
mov dword [0x46f094], 0x4680bb
jmp 0x413f95
mov ebp, dword [esp + 0x30]
mov dword [0x46f094], 0x4680e6
mov edx, dword [esp + 0x28]
inc edx
mov eax, dword [esp + 0x3c]
call fcn.00425450
test eax, eax
je 0x414427
mov esi, dword [esp + 0x3c]
mov al, byte [esi + 0x47c4]
cmp al, 0xff
je 0x415e73
mov byte [esi + 0x47c4], 0xff
xor edx, edx
mov dl, al
cmp al, 0xd9
je 0x4158fb
mov eax, dword [esp + 0x3c]
lea esi, [eax + 0x1a44]
mov dword [esp + 0x48], esi
mov dword [esp + 0x68], ebp
mov ebp, eax
jmp 0x414da9
mov byte [ebp + 0x47c4], 0xff
and edx, 0xff
cmp edx, 0xd9
je 0x4158f7
cmp edx, 0xda
je 0x414e8e
cmp edx, 0xdc
je 0x414e05
mov eax, ebp
call fcn.00410330
test eax, eax
je 0x415210
mov dl, byte [ebp + 0x47c4]
cmp dl, 0xff
jne 0x414d90
mov ebx, dword [ebp]
mov eax, ebx
call fcn.0040fbd0
inc al
jne 0x415250
lea esi, [esi]
mov eax, ebx
call fcn.0040fbd0
cmp al, 0xff
je 0x414df0
mov dl, al
and edx, 0xff
jmp 0x414d9d
mov edi, dword [ebp]
mov eax, edi
call fcn.0040fbd0
mov bl, al
mov eax, edi
call fcn.0040fbd0
and ebx, 0xff
shl ebx, 8
and eax, 0xff
lea esi, [ebx + eax]
mov eax, edi
call fcn.0040fbd0
mov bl, al
mov eax, edi
call fcn.0040fbd0
and ebx, 0xff
shl ebx, 8
and eax, 0xff
add ebx, eax
cmp esi, 4
jne 0x416594
cmp ebx, dword [edi + 4]
je 0x414dcc
mov dword [0x46f094], str.bad_DNL_height
mov ecx, dword [edi + 8]
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov eax, ebx
imul eax, edi
lea ebp, [eax*4 + 0x20]
test ebp, ebp
jne 0x413fa4
mov ebp, 1
jmp 0x413fa4
mov edi, dword [ebp]
mov dword [esp + 0x24], edi
mov eax, edi
call fcn.0040fbd0
mov bl, al
mov eax, edi
call fcn.0040fbd0
mov esi, eax
mov eax, edi
call fcn.0040fbd0
mov cl, al
and ecx, 0xff
mov dword [esp + 0x28], ecx
mov dword [ebp + 0x47f0], ecx
lea eax, [ecx - 1]
cmp eax, 3
ja 0x41525a
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 8]
cmp dword [esp + 0x28], ecx
jg 0x415261
mov eax, dword [esp + 0x28]
lea eax, [eax + eax + 6]
and ebx, 0xff
shl ebx, 8
mov edx, ebx
and esi, 0xff
add edx, esi
cmp eax, edx
jne 0x415328
xor esi, esi
mov edi, dword [esp + 0x24]
mov eax, edi
call fcn.0040fbd0
xor ebx, ebx
mov bl, al
mov dword [esp + 0x24], edi
mov eax, edi
call fcn.0040fbd0
mov edi, eax
mov cl, al
and ecx, 0xff
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 8]
test ecx, ecx
jle 0x4158f0
mov edx, dword [esp + 0x58]
xor eax, eax
jmp 0x414f5c
inc eax
add edx, 0x48
cmp eax, ecx
je 0x415219
cmp ebx, dword [edx]
jne 0x414f50
cmp ecx, eax
je 0x415219
mov ebx, dword [esp + 0x2c]
sar ebx, 4
lea edx, [eax + eax*8]
lea edx, [ebp + edx*8]
mov dword [edx + 0x46ac], ebx
cmp ebx, 3
jg 0x415eea
mov ebx, edi
and ebx, 0xf
mov dword [edx + 0x46b0], ebx
and edi, 0xc
jne 0x415edb
mov dword [ebp + esi*4 + 0x47f4], eax
inc esi
cmp dword [esp + 0x28], esi
jne 0x414f02
mov edi, dword [esp + 0x24]
mov eax, edi
call fcn.0040fbd0
xor ebx, ebx
mov bl, al
mov dword [ebp + 0x47d0], ebx
mov eax, edi
call fcn.0040fbd0
mov esi, eax
and esi, 0xff
mov dword [ebp + 0x47d4], esi
mov eax, edi
call fcn.0040fbd0
mov dl, al
xor eax, eax
mov al, dl
sar eax, 4
mov edi, eax
mov dword [ebp + 0x47d8], eax
mov cl, dl
and ecx, 0xf
mov eax, edx
and eax, 0xf
mov dword [ebp + 0x47dc], eax
mov eax, dword [ebp + 0x47cc]
test eax, eax
je 0x415f4c
cmp ebx, 0x3f
jg 0x415ec5
cmp esi, 0x3f
jg 0x415ec5
cmp ebx, esi
jg 0x415ec5
cmp edi, 0xd
jg 0x415ec5
cmp cl, 0xd
ja 0x415ec5
mov dword [ebp + 0x47c0], 0
mov dword [ebp + 0x47bc], 0
mov dword [ebp + 0x47c8], 0
mov dword [ebp + 0x478c], 0
mov dword [ebp + 0x4744], 0
mov dword [ebp + 0x46fc], 0
mov dword [ebp + 0x46b4], 0
mov byte [ebp + 0x47c4], 0xff
mov eax, dword [ebp + 0x4804]
test eax, eax
jne 0x415093
mov eax, 0x7fffffff
mov dword [ebp + 0x4808], eax
mov dword [ebp + 0x47e0], 0
cmp dword [esp + 0x28], 1
je 0x415337
mov dword [esp + 0x30], 0
mov eax, dword [ebp + 0x4690]
test eax, eax
jle 0x4152d2
mov dword [esp + 0x34], 0
mov eax, dword [ebp + 0x468c]
test eax, eax
jle 0x4152be
xor esi, esi
mov eax, dword [ebp + 0x47f0]
mov edi, ebp
test eax, eax
jle 0x415295
mov eax, dword [edi + esi*4 + 0x47f4]
mov dword [esp + 0x38], eax
lea eax, [eax + eax*8]
lea ebx, [edi + eax*8]
mov ecx, dword [ebx + 0x46a4]
mov dword [esp + 0x2c], 0
test ecx, ecx
jle 0x415286
mov dword [esp + 0x44], esi
mov edx, ecx
mov ecx, dword [ebx + 0x46a0]
xor esi, esi
mov ebp, edi
test ecx, ecx
jg 0x415199
jmp 0x415272
lea edi, [eax + eax]
add edi, eax
lea edi, [eax + edi*4]
lea eax, [eax + edi*8]
shl eax, 4
lea eax, [ebp + eax + 4]
mov edi, dword [esp + 0x30]
imul edx, edi
mov edi, dword [esp + 0x2c]
add edx, edi
mov edi, dword [esp + 0x28]
imul edx, edi
mov edi, dword [esp + 0x34]
imul ecx, edi
add ecx, esi
add edx, ecx
shl edx, 7
mov ecx, dword [esp + 0x24]
add ecx, edx
mov edx, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov ecx, eax
mov eax, ebp
call fcn.00410060
test eax, eax
je 0x415210
inc esi
mov ecx, dword [ebx + 0x46a0]
mov edx, dword [ebx + 0x46a4]
cmp ecx, esi
jle 0x415270
mov eax, dword [ebx + 0x46d8]
mov dword [esp + 0x24], eax
mov edi, dword [ebx + 0x46dc]
mov dword [esp + 0x28], edi
mov eax, dword [ebx + 0x46ac]
mov edi, dword [ebp + 0x47d4]
test edi, edi
je 0x415130
mov eax, str.cant_merge_dc_and_ac
mov dword [0x46f094], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov eax, ebx
imul eax, edi
lea ebp, [eax*4 + 0x20]
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
test ebp, ebp
jne 0x413faf
mov ebp, 1
jmp 0x413faf
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov eax, ebx
imul eax, edi
lea ebp, [eax*4 + 0x20]
test ebp, ebp
jne 0x413faf
jmp 0x4151fb
mov edx, 0xff
jmp 0x414dbd
mov esi, dword [esp + 0x24]
mov ecx, dword [esi + 8]
mov dword [0x46f094], str.bad_SOS_component_count
jmp 0x414e68
mov edi, ebp
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, edx
jl 0x415119
mov esi, dword [esp + 0x44]
inc esi
cmp esi, dword [edi + 0x47f0]
jl 0x4150ec
mov ebp, edi
mov eax, dword [ebp + 0x4808]
dec eax
mov dword [ebp + 0x4808], eax
test eax, eax
jle 0x4166fc
inc dword [esp + 0x34]
mov eax, dword [esp + 0x34]
cmp eax, dword [ebp + 0x468c]
jl 0x4150da
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, dword [ebp + 0x4690]
jl 0x4150c4
mov al, byte [ebp + 0x47c4]
mov dl, al
cmp al, 0xff
jne 0x414d90
mov ebx, dword [ebp]
jmp 0x415308
mov eax, dword [ebx + 0xac]
cmp dword [ebx + 0xa8], eax
jae 0x414dcc
mov eax, ebx
call fcn.0040fbd0
inc al
je 0x415ea4
mov edi, dword [ebx + 0x10]
test edi, edi
je 0x4152e7
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
call dword [ebx + 0x18]
test eax, eax
je 0x4152f9
mov esi, dword [ebx + 0x20]
test esi, esi
jne 0x4152e7
jmp 0x414dd7
mov dword [0x46f094], str.bad_SOS_len
jmp 0x414e68
mov eax, dword [ebp + 0x47f4]
mov dword [esp + 0x5c], eax
lea eax, [eax + eax*8]
lea esi, [ebp + eax*8]
mov dword [esp + 0x64], esi
mov eax, dword [esi + 0x46b8]
add eax, 7
sar eax, 3
mov dword [esp + 0x44], eax
mov eax, dword [esi + 0x46bc]
mov dword [esp + 0x24], eax
add eax, 7
sar eax, 3
mov ebx, eax
test eax, eax
jle 0x4152d2
mov dword [esp + 0x60], 0
mov eax, dword [esp + 0x44]
test eax, eax
jle 0x4152d2
mov dword [esp + 0x2c], 0
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
jmp 0x415407
mov eax, dword [esi + 0x46ac]
mov edi, dword [ebp + 0x47d4]
test edi, edi
jne 0x4151c1
lea edx, [eax + eax]
add edx, eax
lea edx, [eax + edx*4]
lea eax, [eax + edx*8]
shl eax, 4
lea ecx, [ebp + eax + 4]
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov edx, dword [esp + 0x24]
mov eax, ebp
call fcn.00410060
test eax, eax
je 0x415210
mov eax, dword [ebp + 0x4808]
dec eax
mov dword [ebp + 0x4808], eax
test eax, eax
jle 0x41553e
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x44], eax
je 0x4158d4
mov eax, dword [esi + 0x46dc]
imul eax, ebx
mov ecx, dword [esp + 0x2c]
add eax, ecx
shl eax, 7
add eax, dword [esi + 0x46d8]
mov dword [esp + 0x24], eax
mov edi, dword [ebp + 0x47d0]
test edi, edi
je 0x4153a0
mov edx, dword [esi + 0x46b0]
lea eax, [edx + edx]
add eax, edx
lea eax, [edx + eax*4]
lea eax, [edx + eax*8]
shl eax, 4
lea eax, [ebp + eax + 0x1a44]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x47dc]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x47e0]
mov ecx, dword [ebp + 0x47d8]
test ecx, ecx
jne 0x4155fc
test eax, eax
jne 0x41589e
shl edx, 0xa
lea eax, [edx + 0x3684]
mov dword [esp + 0x30], ebx
mov ebx, eax
mov dword [esp + 0x34], esi
jmp 0x4154ea
mov esi, dword [ebp + 0x47bc]
mov eax, esi
shr eax, 0x17
add eax, eax
add eax, ebp
movsx eax, word [eax + ebx]
mov ecx, eax
test eax, eax
je 0x4154fc
mov edx, eax
sar edx, 4
and edx, 0xf
add edx, edi
and ecx, 0xf
shl esi, cl
mov dword [ebp + 0x47bc], esi
sub dword [ebp + 0x47c0], ecx
lea edi, [edx + 1]
xor ecx, ecx
mov cl, byte [edx + 0x4683c0]
mov edx, ecx
sar eax, 8
mov cl, byte [esp + 0x28]
shl eax, cl
mov esi, dword [esp + 0x24]
mov word [esi + edx*2], ax
cmp dword [ebp + 0x47d4], edi
jl 0x415531
cmp dword [ebp + 0x47c0], 0xf
jg 0x415490
mov eax, ebp
call fcn.0040fc70
jmp 0x415490
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.0040fd00
test eax, eax
js 0x415817
mov ecx, eax
sar ecx, 4
and eax, 0xf
jne 0x4155ce
cmp ecx, 0xe
jle 0x415878
add edi, 0x10
cmp dword [ebp + 0x47d4], edi
jge 0x4154ea
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
jmp 0x4153e0
cmp dword [ebp + 0x47c0], 0x17
jle 0x41569c
mov al, byte [ebp + 0x47c4]
lea edx, [eax + 0x30]
cmp dl, 7
ja 0x4152d8
mov dword [ebp + 0x47c0], 0
mov dword [ebp + 0x47bc], 0
mov dword [ebp + 0x47c8], 0
mov dword [ebp + 0x478c], 0
mov dword [ebp + 0x4744], 0
mov dword [ebp + 0x46fc], 0
mov dword [ebp + 0x46b4], 0
mov byte [ebp + 0x47c4], 0xff
mov eax, dword [ebp + 0x4804]
test eax, eax
jne 0x4155b9
mov eax, 0x7fffffff
mov dword [ebp + 0x4808], eax
mov dword [ebp + 0x47e0], 0
jmp 0x4153f5
add ecx, edi
lea edi, [ecx + 1]
movzx esi, byte [ecx + 0x4683c0]
and esi, 0xff
mov edx, eax
mov eax, ebp
call fcn.0040fe10
mov cl, byte [esp + 0x28]
shl eax, cl
mov ecx, dword [esp + 0x24]
mov word [ecx + esi*2], ax
jmp 0x4154e2
mov edx, 1
mov cl, byte [esp + 0x28]
shl edx, cl
mov dword [esp + 0x4c], edx
mov word [esp + 0x34], dx
test eax, eax
je 0x4156a8
dec eax
mov dword [ebp + 0x47e0], eax
cmp dword [ebp + 0x47d4], edi
jl 0x4153e0
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x24]
jmp 0x415646
inc edi
cmp edi, dword [ebp + 0x47d4]
jg 0x41586b
xor ebx, ebx
mov bl, byte [edi + 0x4683c0]
add ebx, ebx
add ebx, esi
cmp word [ebx], 0
je 0x415639
mov eax, dword [ebp + 0x47c0]
test eax, eax
jle 0x4158aa
mov edx, dword [ebp + 0x47bc]
lea ecx, [edx + edx]
mov dword [ebp + 0x47bc], ecx
dec eax
mov dword [ebp + 0x47c0], eax
test edx, edx
jns 0x415639
mov ax, word [ebx]
test word [esp + 0x34], ax
jne 0x415639
test ax, ax
jle 0x415e98
add eax, dword [esp + 0x4c]
mov word [ebx], ax
jmp 0x415639
mov eax, ebp
call fcn.0040fc70
jmp 0x41554b
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], esi
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.0040fd00
test eax, eax
js 0x415817
mov esi, eax
sar esi, 4
and eax, 0xf
mov dword [esp + 0x30], eax
jne 0x4157b9
cmp esi, 0xe
jg 0x415700
mov eax, 1
mov ecx, esi
shl eax, cl
lea edx, [eax - 1]
mov dword [ebp + 0x47e0], edx
test esi, esi
jne 0x415821
mov esi, 0x40
lea esi, [esi]
mov edx, dword [ebp + 0x47d4]
cmp edx, edi
jl 0x415787
mov ecx, edx
jmp 0x415719
test esi, esi
je 0x415778
dec esi
cmp edi, ecx
jg 0x415787
inc edi
xor ebx, ebx
mov bl, byte [edi + 0x4683bf]
add ebx, ebx
mov eax, dword [esp + 0x24]
add ebx, eax
cmp word [ebx], 0
je 0x415710
mov eax, dword [ebp + 0x47c0]
mov dword [esp + 0x28], eax
test eax, eax
jle 0x4157a0
mov edx, dword [ebp + 0x47bc]
lea eax, [edx + edx]
mov dword [ebp + 0x47bc], eax
mov eax, dword [esp + 0x28]
dec eax
mov dword [ebp + 0x47c0], eax
test edx, edx
jns 0x415715
mov ax, word [ebx]
test word [esp + 0x34], ax
jne 0x415715
test ax, ax
jle 0x4157fc
add eax, dword [esp + 0x4c]
mov word [ebx], ax
jmp 0x415715
mov eax, dword [esp + 0x30]
mov word [ebx], ax
cmp ecx, edi
jge 0x4156b0
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
jmp 0x4153e0
mov eax, ebp
call fcn.0040fc70
mov eax, dword [ebp + 0x47c0]
mov dword [esp + 0x28], eax
mov ecx, dword [ebp + 0x47d4]
jmp 0x41573e
cmp dword [esp + 0x30], 1
jne 0x415817
mov eax, dword [ebp + 0x47c0]
test eax, eax
jle 0x415808
mov edx, dword [ebp + 0x47bc]
lea ecx, [edx + edx]
mov dword [ebp + 0x47bc], ecx
dec eax
mov dword [ebp + 0x47c0], eax
movsx eax, word [esp + 0x34]
mov dword [esp + 0x30], eax
test edx, edx
js 0x415700
neg eax
mov dword [esp + 0x30], eax
jmp 0x415700
sub eax, dword [esp + 0x4c]
mov word [ebx], ax
jmp 0x415715
mov eax, ebp
call fcn.0040fc70
mov eax, dword [ebp + 0x47c0]
jmp 0x4157ca
mov eax, 0x467f3e
jmp 0x4151c6
mov ebx, dword [ebp + 0x47c0]
cmp esi, ebx
jg 0x4158bc
mov eax, dword [ebp + 0x47bc]
mov ecx, esi
rol eax, cl
mov ecx, eax
mov eax, dword [esi*4 + 0x468460]
mov dword [esp + 0x28], eax
not eax
and eax, ecx
mov dword [ebp + 0x47bc], eax
sub ebx, esi
mov dword [ebp + 0x47c0], ebx
mov eax, dword [esp + 0x28]
and eax, ecx
add eax, edx
mov dword [ebp + 0x47e0], eax
jmp 0x4156f4
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
jmp 0x4153e0
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, 1
shl eax, cl
mov dword [esp + 0x24], eax
mov dword [ebp + 0x47e0], eax
test ecx, ecx
jne 0x415f06
mov eax, 1
dec eax
mov dword [ebp + 0x47e0], eax
jmp 0x4153e0
mov eax, ebp
call fcn.0040fc70
mov eax, dword [ebp + 0x47c0]
jmp 0x415666
mov eax, ebp
call fcn.0040fc70
mov edx, dword [ebp + 0x47e0]
mov ebx, dword [ebp + 0x47c0]
jmp 0x41582f
mov ebx, dword [esp + 0x6c]
inc dword [esp + 0x60]
mov eax, dword [esp + 0x60]
cmp ebx, eax
jne 0x41538a
jmp 0x4152d2
xor eax, eax
jmp 0x414f60
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x3c]
mov esi, dword [eax]
mov dword [esp + 0x50], esi
mov esi, dword [esi + 8]
mov dword [esp + 0x28], esi
mov edx, dword [eax + 0x47cc]
test edx, edx
jne 0x4163d4
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov dword [esp + 0x50], eax
mov eax, dword [eax + 8]
mov dword [esp + 0x28], eax
cmp eax, 3
je 0x415d57
lea edi, [esp + 0x98]
mov dword [esp + 0x44], edi
mov ecx, 4
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
mov dword [esp + 0x5c], 0
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x415a6e
mov eax, edx
add eax, 3
mov dword [esp + 0x2c], eax
jne 0x415975
mov dword [esp + 0x2c], 1
lea esi, [esp + 0xa8]
xor ebx, ebx
lea eax, [edx - 1]
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], ebx
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x34], edx
jmp 0x4159bd
cmp ecx, 2
je 0x415a3d
mov eax, 0x40c4c0
mov dword [esi], eax
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
add esi, 0x20
add ebp, 0x48
mov ecx, dword [esp + 0x28]
cmp eax, ecx
je 0x415a6a
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov dword [esp], 1
call sub.msvcrt.dll_calloc
test eax, eax
je 0x4165e7
mov dword [ebp + 0x34], eax
mov eax, dword [edi + 0x4684]
cdq
idiv dword [ebp]
mov ecx, eax
mov dword [esi + 0xc], eax
mov eax, dword [edi + 0x4688]
cdq
idiv dword [ebp + 4]
mov ebx, eax
mov dword [esi + 0x10], eax
sar eax, 1
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x30]
add eax, ecx
xor edx, edx
div ecx
mov dword [esi + 0x14], eax
mov dword [esi + 0x1c], 0
mov eax, dword [ebp + 0x28]
mov dword [esi + 8], eax
mov dword [esi + 4], eax
cmp ecx, 1
jne 0x415993
cmp ebx, 1
je 0x415a60
cmp ebx, 2
jne 0x41599c
mov eax, 0x40c2d0
jmp 0x4159a1
cmp ebx, 1
jne 0x415a4c
mov eax, 0x40c320
jmp 0x4159a1
cmp ebx, 2
jne 0x41599c
mov eax, dword [edi + 0x4814]
jmp 0x4159a1
mov eax, 0x40c2c0
jmp 0x4159a1
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
mov ebx, dword [eax + 4]
mov dword [esp], 1
mov ecx, ebx
mov dword [esp + 0x24], edx
mov eax, 4
call fcn.00411940
mov dword [esp + 0x48], eax
test eax, eax
mov edx, dword [esp + 0x24]
je 0x415c9b
mov dword [esp + 0x4c], 0
test ebx, ebx
je 0x415d15
mov ebx, dword [esp + 0x50]
mov esi, edx
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x415c17
lea ebp, [esp + 0xa8]
mov eax, dword [esp + 0x3c]
lea edi, [eax + 0x46bc]
xor eax, eax
mov dword [esp + 0x54], ebx
mov ebx, eax
mov dword [esp + 0x58], esi
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], eax
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x30], ecx
mov edx, dword [ebp]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x34], esi
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x38], esi
mov esi, dword [ebp + 4]
mov dword [esp + 0x24], esi
mov esi, dword [ebp + 8]
sar ecx, 1
cmp eax, ecx
jge 0x415c50
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call edx
mov ecx, dword [esp + 0x44]
mov dword [ecx + ebx*4], eax
mov eax, dword [esp + 0x2c]
inc eax
cmp dword [esp + 0x30], eax
jle 0x415c20
mov dword [ebp + 0x18], eax
inc ebx
add ebp, 0x20
add edi, 0x48
mov eax, dword [esp + 0x28]
cmp ebx, eax
jne 0x415adb
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, dword [ebx]
mov edx, dword [esp + 0x4c]
imul edx, esi
mov esi, dword [esp + 0x48]
lea esi, [esi + edx*4]
mov edx, dword [esp + 0x98]
mov ecx, dword [ebx + 8]
cmp ecx, 3
je 0x415c57
cmp ecx, 4
jne 0x415cee
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x47e8]
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x415de7
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x4810]
mov ebp, dword [esp + 0xa0]
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x24], edi
cmp dword [esp + 0x2c], 2
mov dword [esp + 0x14], 4
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ebp
je 0x416516
mov eax, dword [esp + 0x24]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call ecx
inc dword [esp + 0x4c]
mov eax, dword [esp + 0x4c]
cmp eax, dword [ebx + 4]
jae 0x415d15
mov esi, dword [ebx]
mov eax, dword [esp + 0x28]
test eax, eax
jg 0x415abe
mov eax, esi
jmp 0x415b70
mov dword [ebp + 0x18], 0
mov dword [ebp + 4], esi
mov eax, dword [ebp + 0x1c]
inc eax
mov dword [ebp + 0x1c], eax
cmp eax, dword [edi]
jge 0x415b53
mov eax, dword [edi + 4]
add eax, esi
mov dword [ebp + 8], eax
jmp 0x415b53
mov ecx, esi
jmp 0x415b16
mov ebp, dword [esp + 0x5c]
test ebp, ebp
jne 0x415da9
mov dword [esp + 0x14], 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
mov eax, dword [esp + 0x3c]
call dword [eax + 0x4810]
jmp 0x415bf8
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
mov eax, esi
call fcn.00425450
mov dword [0x46f094], 0x4680e6
mov dword [esp], esi
call sub.msvcrt.dll_free
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov eax, ebx
imul eax, edi
lea ebp, [eax*4 + 0x20]
test ebp, ebp
jne 0x415cd9
mov ebp, 1
mov eax, 0x4680e6
lea esi, [esp + 0xa8]
mov dword [esp + 0x24], esi
jmp 0x413f21
xor ecx, ecx
test eax, eax
je 0x415bf8
mov al, byte [edx + ecx]
mov byte [esi + ecx*4 + 2], al
mov byte [esi + ecx*4 + 1], al
mov byte [esi + ecx*4], al
mov byte [esi + ecx*4 + 3], 0xff
inc ecx
cmp ecx, dword [ebx]
jb 0x415cf8
jmp 0x415bf8
mov eax, dword [esp + 0x50]
mov edx, dword [eax + 8]
mov esi, dword [esp + 0x3c]
mov eax, esi
call fcn.00425450
mov eax, dword [esi]
mov ebx, dword [eax]
mov dword [esp + 0x7c], ebx
mov edi, dword [eax + 4]
mov dword [esp + 0x78], edi
cmp dword [eax + 8], 3
setge al
and eax, 0xff
lea eax, [eax + eax + 1]
mov dword [esp + 0x74], eax
mov dword [esp], esi
call sub.msvcrt.dll_free
jmp 0x4141d1
mov eax, dword [esp + 0x3c]
cmp dword [eax + 0x47ec], 3
je 0x415ef9
mov edx, dword [eax + 0x47e8]
test edx, edx
jne 0x415eb8
mov eax, dword [eax + 0x47e4]
test eax, eax
sete al
and eax, 0xff
mov dword [esp + 0x5c], eax
lea edi, [esp + 0x98]
mov dword [esp + 0x44], edi
mov ecx, 4
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
jmp 0x415962
test eax, eax
je 0x415bf8
mov ecx, dword [esp + 0x9c]
mov ebp, dword [esp + 0xa0]
xor eax, eax
mov edi, ecx
mov cl, byte [edx + eax]
mov byte [esi + eax*4], cl
mov cl, byte [edi + eax]
mov byte [esi + eax*4 + 1], cl
mov cl, byte [ebp + eax]
mov byte [esi + eax*4 + 2], cl
mov byte [esi + eax*4 + 3], 0xff
inc eax
cmp eax, dword [ebx]
jb 0x415dc3
jmp 0x415bf8
test eax, eax
je 0x415bf8
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x30], eax
xor ebp, ebp
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov cl, byte [eax + ebp]
xor eax, eax
mov al, byte [edx + ebp]
imul eax, ecx
sub eax, 0xffffff80
mov edi, eax
shr edi, 8
add eax, edi
mov byte [esi + ebp*4], ah
mov edi, dword [esp + 0x2c]
xor eax, eax
mov al, byte [edi + ebp]
imul eax, ecx
sub eax, 0xffffff80
mov edi, eax
shr edi, 8
add eax, edi
mov byte [esi + ebp*4 + 1], ah
mov edi, dword [esp + 0x30]
xor eax, eax
mov al, byte [edi + ebp]
imul eax, ecx
sub eax, 0xffffff80
mov ecx, eax
shr ecx, 8
add ecx, eax
mov byte [esi + ebp*4 + 2], ch
mov byte [esi + ebp*4 + 3], 0xff
inc ebp
cmp ebp, dword [ebx]
jb 0x415e12
jmp 0x415bf8
mov eax, dword [esp + 0x3c]
mov esi, dword [eax]
mov eax, esi
call fcn.0040fbd0
inc al
jne 0x4165a3
mov eax, esi
call fcn.0040fbd0
cmp al, 0xff
je 0x415e88
jmp 0x414d61
sub eax, dword [esp + 0x4c]
mov word [ebx], ax
jmp 0x415639
mov eax, ebx
call fcn.0040fbd0
mov dl, al
mov byte [ebp + 0x47c4], al
jmp 0x414dd2
mov dword [esp + 0x5c], 0
jmp 0x415d8a
mov esi, dword [esp + 0x24]
mov dword [0x46f094], 0x46829a
mov ecx, dword [esi + 8]
jmp 0x414e68
mov dword [0x46f094], str.bad_AC_huff
jmp 0x414e68
mov dword [0x46f094], str.bad_DC_huff
jmp 0x414e68
mov dword [esp + 0x5c], 1
jmp 0x415d8a
mov eax, dword [ebp + 0x47c0]
cmp ecx, eax
jg 0x416798
mov edx, dword [ebp + 0x47bc]
rol edx, cl
mov edi, edx
mov edx, dword [ecx*4 + 0x468460]
mov dword [esp + 0x28], edx
not edx
and edx, edi
mov dword [ebp + 0x47bc], edx
sub eax, ecx
mov dword [ebp + 0x47c0], eax
mov eax, dword [esp + 0x28]
and eax, edi
mov ecx, dword [esp + 0x24]
add eax, ecx
jmp 0x41589e
test ebx, ebx
jne 0x415ec5
test edi, edi
jne 0x415ec5
test cl, cl
jne 0x415ec5
mov dword [ebp + 0x47d4], 0x3f
mov dword [ebp + 0x47c0], 0
mov dword [ebp + 0x47bc], 0
mov dword [ebp + 0x47c8], 0
mov dword [ebp + 0x478c], 0
mov dword [ebp + 0x4744], 0
mov dword [ebp + 0x46fc], 0
mov dword [ebp + 0x46b4], 0
mov byte [ebp + 0x47c4], 0xff
mov eax, dword [ebp + 0x4804]
test eax, eax
jne 0x415fca
mov eax, 0x7fffffff
mov dword [ebp + 0x4808], eax
mov dword [ebp + 0x47e0], 0
cmp dword [esp + 0x28], 1
je 0x4161e0
mov dword [esp + 0x34], 0
mov eax, dword [ebp + 0x4690]
test eax, eax
jle 0x4152d2
mov dword [esp + 0x2c], 0
mov eax, dword [ebp + 0x468c]
test eax, eax
jle 0x4161c0
xor edx, edx
mov eax, dword [ebp + 0x47f0]
test eax, eax
jle 0x416197
mov eax, dword [ebp + edx*4 + 0x47f4]
mov dword [esp + 0x44], eax
lea eax, [eax + eax*8]
lea edi, [ebp + eax*8]
mov esi, dword [edi + 0x46a4]
mov dword [esp + 0x30], 0
test esi, esi
jle 0x41618a
mov dword [esp + 0x4c], edx
mov ebx, dword [edi + 0x46a0]
test ebx, ebx
jle 0x416176
lea eax, [ebp + 4]
mov dword [esp + 0x38], eax
xor ecx, ecx
lea eax, [esp + 0xa8]
mov dword [esp + 0x24], eax
mov eax, ebx
mov ebx, esi
mov esi, ecx
jmp 0x4160c0
mov eax, dword [edi + 0x46c0]
mov ecx, dword [esp + 0x24]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
imul ebx, eax
mov eax, dword [esp + 0x28]
lea eax, [eax + ebx*8]
add eax, dword [edi + 0x46c8]
mov dword [esp], eax
call dword [ebp + 0x480c]
inc esi
mov eax, dword [edi + 0x46a0]
cmp eax, esi
jle 0x416170
mov ebx, dword [edi + 0x46a4]
mov ecx, dword [esp + 0x2c]
imul eax, ecx
add eax, esi
shl eax, 3
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
imul ebx, eax
mov eax, dword [esp + 0x30]
add ebx, eax
mov eax, dword [edi + 0x46b0]
mov edx, dword [edi + 0x46ac]
lea ecx, [edx + edx]
add ecx, edx
lea ecx, [edx + ecx*4]
lea ecx, [edx + ecx*8]
shl ecx, 4
mov edx, dword [esp + 0x38]
add ecx, edx
mov edx, dword [edi + 0x46a8]
shl edx, 7
lea edx, [ebp + edx + 0x3484]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 8], edx
mov edx, eax
shl edx, 0xa
lea edx, [ebp + edx + 0x3684]
mov dword [esp + 4], edx
lea edx, [eax + eax]
add edx, eax
lea edx, [eax + edx*4]
lea eax, [eax + edx*8]
shl eax, 4
mov edx, dword [esp + 0x48]
add eax, edx
mov dword [esp], eax
mov edx, dword [esp + 0x24]
mov eax, ebp
call fcn.0040fe90
test eax, eax
jne 0x416080
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
jmp 0x415224
mov esi, dword [edi + 0x46a4]
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, esi
jl 0x41604d
mov edx, dword [esp + 0x4c]
inc edx
cmp edx, dword [ebp + 0x47f0]
jl 0x416021
mov eax, dword [ebp + 0x4808]
dec eax
mov dword [ebp + 0x4808], eax
test eax, eax
jle 0x416660
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, dword [ebp + 0x468c]
jl 0x416011
inc dword [esp + 0x34]
mov eax, dword [esp + 0x34]
cmp eax, dword [ebp + 0x4690]
jl 0x415ffb
jmp 0x4152d2
mov eax, dword [ebp + 0x47f4]
mov dword [esp + 0x2c], eax
lea ecx, [eax*8]
add eax, ecx
lea edx, [ebp + eax*8]
mov eax, dword [edx + 0x46b8]
add eax, 7
sar eax, 3
mov edx, dword [edx + 0x46bc]
add edx, 7
sar edx, 3
test edx, edx
jle 0x4152d2
lea esi, [eax*8]
mov dword [esp + 0x30], esi
test eax, eax
jle 0x416644
lea esi, [esp + 0xa8]
mov dword [esp + 0x24], esi
lea eax, [ebp + 0x1a44]
mov dword [esp + 0x34], eax
lea eax, [ebp + 4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
add eax, ecx
lea ebx, [ebp + eax*8]
mov dword [esp + 0x28], edi
mov edi, esi
xor esi, esi
mov dword [esp + 0x44], edx
jmp 0x41626f
add esi, 8
mov eax, dword [esp + 0x30]
cmp esi, eax
je 0x4163bb
mov eax, dword [ebx + 0x46b0]
mov edx, dword [ebx + 0x46ac]
lea ecx, [edx + edx]
add ecx, edx
lea ecx, [edx + ecx*4]
lea ecx, [edx + ecx*8]
shl ecx, 4
mov edx, dword [esp + 0x38]
add ecx, edx
mov edx, dword [ebx + 0x46a8]
shl edx, 7
lea edx, [ebp + edx + 0x3484]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 8], edx
mov edx, eax
shl edx, 0xa
lea edx, [ebp + edx + 0x3684]
mov dword [esp + 4], edx
lea edx, [eax + eax]
add edx, eax
lea edx, [eax + edx*4]
lea eax, [eax + edx*8]
shl eax, 4
mov edx, dword [esp + 0x34]
add eax, edx
mov dword [esp], eax
mov edx, edi
mov eax, ebp
call fcn.0040fe90
test eax, eax
je 0x416153
mov eax, dword [ebx + 0x46c0]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x28]
imul eax, ecx
lea eax, [esi + eax*8]
add eax, dword [ebx + 0x46c8]
mov dword [esp], eax
call dword [ebp + 0x480c]
mov eax, dword [ebp + 0x4808]
dec eax
mov dword [ebp + 0x4808], eax
test eax, eax
jg 0x416260
cmp dword [ebp + 0x47c0], 0x17
jle 0x4163af
mov al, byte [ebp + 0x47c4]
lea edx, [eax + 0x30]
cmp dl, 7
ja 0x4152d8
mov dword [ebp + 0x47c0], 0
mov dword [ebp + 0x47bc], 0
mov dword [ebp + 0x47c8], 0
mov dword [ebp + 0x478c], 0
mov dword [ebp + 0x4744], 0
mov dword [ebp + 0x46fc], 0
mov dword [ebp + 0x46b4], 0
mov byte [ebp + 0x47c4], 0xff
mov eax, dword [ebp + 0x4804]
test eax, eax
jne 0x41639a
mov eax, 0x7fffffff
mov dword [ebp + 0x4808], eax
mov dword [ebp + 0x47e0], 0
jmp 0x416260
mov eax, ebp
call fcn.0040fc70
jmp 0x41632c
mov edx, dword [esp + 0x44]
inc dword [esp + 0x28]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x416256
jmp 0x4152d2
mov ecx, dword [esp + 0x28]
test ecx, ecx
jle 0x4165c0
mov eax, dword [esp + 0x3c]
lea ecx, [eax + 0x46a8]
xor esi, esi
mov eax, dword [ecx + 0x10]
add eax, 7
sar eax, 3
mov ebx, dword [ecx + 0x14]
lea edx, [ebx + 7]
sar edx, 3
mov dword [esp + 0x30], edx
test edx, edx
jle 0x4164f3
lea ebx, [eax*8]
mov dword [esp + 0x34], ebx
xor edx, edx
test eax, eax
jle 0x416509
mov dword [esp + 0x38], esi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x44], ebp
mov edx, ecx
mov eax, dword [edx]
add eax, 0x69
shl eax, 7
mov ecx, eax
mov eax, dword [esp + 0x3c]
mov esi, dword [eax + 0x480c]
mov dword [esp + 0x28], esi
mov esi, dword [edx + 0x18]
mov ebx, dword [esp + 0x2c]
mov eax, ebx
imul eax, esi
lea edi, [eax*8]
mov ebp, dword [edx + 0x20]
add ebp, edi
imul ebx, dword [edx + 0x34]
shl ebx, 7
add ebx, dword [edx + 0x30]
mov eax, dword [esp + 0x34]
add eax, dword [edx + 0x20]
add edi, eax
mov dword [esp + 0x24], edi
mov eax, dword [esp + 0x3c]
lea edi, [eax + ecx]
mov dword [esp + 0x48], edx
mov eax, edi
mov edi, ebx
mov ebx, ebp
mov ebp, eax
lea esi, [esi]
nop
xor eax, eax
lea esi, [esi]
lea esi, [esi]
mov dx, word [edi + eax*2]
imul dx, word [ebp + eax*2 + 4]
mov word [edi + eax*2], dx
inc eax
cmp eax, 0x40
jne 0x4164a0
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
mov eax, dword [esp + 0x28]
call eax
add ebx, 8
sub edi, 0xffffff80
mov eax, dword [esp + 0x24]
cmp ebx, eax
jne 0x416490
mov edx, dword [esp + 0x48]
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x30], eax
jne 0x41642d
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x44]
mov ecx, edx
inc esi
add ecx, 0x48
mov eax, dword [esp + 0x50]
cmp esi, dword [eax + 8]
jl 0x4163ec
jmp 0x41591a
inc edx
cmp dword [esp + 0x30], edx
jne 0x416417
jmp 0x4164f3
mov dword [esp + 8], edi
mov dword [esp + 4], edx
mov dword [esp], esi
call ecx
mov edi, dword [ebx]
test edi, edi
je 0x415bf8
mov edi, dword [esp + 0xa4]
xor ebp, ebp
xor edx, edx
mov dl, byte [edi + ebp]
mov al, byte [esi]
not eax
and eax, 0xff
imul eax, edx
sub eax, 0xffffff80
mov ecx, eax
shr ecx, 8
add eax, ecx
mov byte [esi], ah
mov al, byte [esi + 1]
not eax
and eax, 0xff
imul eax, edx
sub eax, 0xffffff80
mov ecx, eax
shr ecx, 8
add eax, ecx
mov byte [esi + 1], ah
mov al, byte [esi + 2]
not eax
and eax, 0xff
imul eax, edx
sub eax, 0xffffff80
mov edx, eax
shr edx, 8
add eax, edx
mov byte [esi + 2], ah
add esi, 4
inc ebp
cmp ebp, dword [ebx]
jb 0x416536
jmp 0x415bf8
mov dword [0x46f094], str.bad_DNL_len
jmp 0x414e65
mov edx, 0xff
jmp 0x414d6d
mov ebp, dword [esp + 0x30]
jmp 0x414d48
lea edi, [esp + 0x98]
mov dword [esp + 0x44], edi
mov ecx, 4
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x50]
mov edx, dword [eax]
mov dword [esp + 0x5c], 0
jmp 0x415a6e
mov dword [esp + 0x8c], 1
mov dword [esp + 0x90], 0x468040
mov dword [esp + 0x94], 0x468057
lea eax, [esp + 0x8c]
call fcn.00411500
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0x468040
mov dword [esp + 4], 0x468057
xor eax, eax
mov dword [esp], eax
call dword [sym.imp.USER32.dll_MessageBoxA]
sub esp, 0x10
mov eax, 1
call fcn.00411470
inc edi
cmp edx, edi
jne 0x416222
jmp 0x4152d2
cmp dword [ebp + 0x47c0], 0x17
jle 0x4166f0
mov al, byte [ebp + 0x47c4]
lea edx, [eax + 0x30]
cmp dl, 7
ja 0x4152d8
mov dword [ebp + 0x47c0], 0
mov dword [ebp + 0x47bc], 0
mov dword [ebp + 0x47c8], 0
mov dword [ebp + 0x478c], 0
mov dword [ebp + 0x4744], 0
mov dword [ebp + 0x46fc], 0
mov dword [ebp + 0x46b4], 0
mov byte [ebp + 0x47c4], 0xff
mov eax, dword [ebp + 0x4804]
test eax, eax
jne 0x4166db
mov eax, 0x7fffffff
mov dword [ebp + 0x4808], eax
mov dword [ebp + 0x47e0], 0
jmp 0x4161ac
mov eax, ebp
call fcn.0040fc70
jmp 0x41666d
cmp dword [ebp + 0x47c0], 0x17
jle 0x41678c
mov al, byte [ebp + 0x47c4]
lea edx, [eax + 0x30]
cmp dl, 7
ja 0x4152d8
mov dword [ebp + 0x47c0], 0
mov dword [ebp + 0x47bc], 0
mov dword [ebp + 0x47c8], 0
mov dword [ebp + 0x478c], 0
mov dword [ebp + 0x4744], 0
mov dword [ebp + 0x46fc], 0
mov dword [ebp + 0x46b4], 0
mov byte [ebp + 0x47c4], 0xff
mov eax, dword [ebp + 0x4804]
test eax, eax
jne 0x416777
mov eax, 0x7fffffff
mov dword [ebp + 0x4808], eax
mov dword [ebp + 0x47e0], 0
jmp 0x4152aa
mov eax, ebp
call fcn.0040fc70
jmp 0x416709
mov dword [esp + 0x28], ecx
mov eax, ebp
call fcn.0040fc70
mov eax, dword [ebp + 0x47e0]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x47c0]
mov ecx, dword [esp + 0x28]
jmp 0x415f14
mov dword [0x46f094], str.bad_TQ
mov ecx, dword [ebx + 8]
jmp 0x413f95
mov dword [0x46f094], str.bad_V
mov ecx, dword [ebx + 8]
jmp 0x413f95
mov dword [0x46f094], str.bad_H
mov ecx, dword [ebx + 8]
jmp 0x413f95