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

Disassembly:
push ebp
mov ebp, eax
push edi
push esi
push ebx
sub esp, 0xec
test edx, edx
jne 0x411a20
mov dword [ebp + 8], 0
xor edx, edx
xor ecx, ecx
mov esi, ebp
mov dword [ebp + 0xc], 0
lea esi, [esi]
nop
test ecx, ecx
jle 0x410bb3
mov eax, edx
sub ecx, 1
shr edx, 1
and eax, 1
mov dword [esi + 0xc], edx
mov dword [esp + 0x28], eax
mov dword [esi + 8], ecx
cmp ecx, 1
jle 0x410b78
mov eax, edx
lea edi, [ecx - 2]
shr eax, 2
mov dword [esp + 0x1c], edi
mov dword [esi + 0xc], eax
mov dword [esi + 8], edi
and edx, 3
je 0x410a51
cmp edx, 3
je 0x410728
cmp edx, 1
je 0x410c1f
mov eax, esi
call sym.stbi__compute_huffman_codes_stbi__zbuf_
test eax, eax
je 0x410728
mov eax, dword [esi + 8]
mov dword [esp + 0x1c], eax
mov ebp, dword [esi + 0x10]
mov ebx, esi
cmp eax, 0xf
jg 0x41047c
lea esi, [esi]
lea esi, [esi]
mov esi, dword [ebx + 4]
cmp dword [ebx], esi
jae 0x410716
mov edx, dword [ebx + 0xc]
mov ecx, eax
jmp 0x41041c
mov eax, dword [ebx]
cmp eax, esi
jae 0x41040a
lea edi, [eax + 1]
mov dword [ebx], edi
movzx eax, byte [eax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], ecx
cmp ecx, 0x18
jg 0x410740
mov eax, edx
shr eax, cl
test eax, eax
je 0x4103f8
mov dword [ebx], esi
mov eax, ecx
mov ecx, edx
and ecx, 0x1ff
movzx ecx, word [ebx + ecx*2 + 0x20]
mov edi, ecx
test ecx, ecx
je 0x410680
sar ecx, 9
mov esi, edi
shr edx, cl
sub eax, ecx
and esi, 0x1ff
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], eax
test di, 0x100
jne 0x4104ea
cmp ebp, dword [ebx + 0x18]
jae 0x410850
mov eax, esi
add ebp, 1
mov byte [ebp - 1], al
mov eax, dword [ebx + 8]
cmp eax, 0xf
jle 0x4103e0
mov edx, dword [ebx + 0xc]
jmp 0x410428
mov ecx, 6
mov edi, 0xa
lea esi, [esi]
sar esi, cl
movzx ecx, word [ebx + edi*2 + 0x420]
sub esi, ecx
movzx ecx, word [ebx + edi*2 + 0x484]
add esi, ecx
cmp esi, 0x11f
jg 0x410716
movzx ecx, byte [ebx + esi + 0x4a4]
cmp ecx, edi
jne 0x410716
mov ecx, edi
sub eax, edi
shr edx, cl
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
movzx esi, word [ebx + esi*2 + 0x5c4]
cmp esi, 0xff
jle 0x41045f
cmp esi, 0x100
je 0x4118b0
cmp esi, 0x11d
jg 0x410716
sub esi, 0x101
mov eax, dword [esi*4 + 0x4ecce0]
mov esi, dword [esi*4 + 0x4ecc60]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 8]
test esi, esi
jne 0x410870
cmp eax, 0xf
jg 0x410730
mov esi, dword [ebx + 4]
cmp dword [ebx], esi
jae 0x410716
mov edx, dword [ebx + 0xc]
mov ecx, eax
jmp 0x410564
mov eax, dword [ebx]
cmp eax, esi
jae 0x410552
lea edi, [eax + 1]
mov dword [ebx], edi
movzx eax, byte [eax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], ecx
cmp ecx, 0x18
jg 0x410928
mov eax, edx
shr eax, cl
test eax, eax
je 0x410540
mov dword [ebx], esi
mov eax, ecx
mov ecx, edx
and ecx, 0x1ff
movzx ecx, word [ebx + ecx*2 + 0x804]
mov esi, ecx
test ecx, ecx
je 0x410750
sar ecx, 9
and esi, 0x1ff
sub eax, ecx
shr edx, cl
mov dword [ebx + 0xc], edx
mov dword [esp + 0x20], eax
mov dword [ebx + 8], eax
cmp esi, 0x1d
jg 0x410716
mov edi, dword [esi*4 + 0x4ecbe0]
mov esi, dword [esi*4 + 0x4ecb60]
test esi, esi
jne 0x4108d0
mov eax, ebp
sub eax, dword [ebx + 0x14]
cmp eax, edi
jl 0x410716
mov eax, dword [esp + 0x1c]
add eax, ebp
cmp dword [ebx + 0x18], eax
jb 0x410908
mov esi, edx
lea ecx, [edx + edx]
sar esi, 1
and ecx, 0xaaaa
and esi, 0x5555
or esi, ecx
mov ecx, esi
shl esi, 2
sar ecx, 2
and esi, 0xcccc
and ecx, 0x3333
or ecx, esi
mov esi, ecx
shl ecx, 4
sar esi, 4
and ecx, 0xf0f0
and esi, 0xf0f
or esi, ecx
mov ecx, esi
shl esi, 8
sar ecx, 8
movzx esi, si
or esi, ecx
cmp dword [ebx + 0x468], esi
jg 0x410488
cmp esi, dword [ebx + 0x46c]
jl 0x410930
cmp esi, dword [ebx + 0x470]
jl 0x4109f8
cmp esi, dword [ebx + 0x474]
jl 0x410a1a
cmp esi, dword [ebx + 0x478]
jl 0x410a24
cmp esi, dword [ebx + 0x47c]
jl 0x410a3d
mov dword [esp], 0x4e9010
call sym.___emutls_get_address
mov dword [eax], str.Corrupt_PNG
xor eax, eax
jmp 0x410b6d
mov edx, dword [ebx + 0xc]
jmp 0x410570
mov eax, ecx
jmp 0x410428
mov esi, edx
lea ecx, [edx + edx]
sar esi, 1
and ecx, 0xaaaa
and esi, 0x5555
or ecx, esi
mov esi, ecx
shl ecx, 2
sar esi, 2
and ecx, 0xcccc
and esi, 0x3333
or ecx, esi
mov esi, ecx
shl ecx, 4
sar esi, 4
and ecx, 0xf0f0
and esi, 0xf0f
or ecx, esi
mov esi, ecx
shl ecx, 8
sar esi, 8
movzx ecx, cx
or esi, ecx
cmp dword [ebx + 0xc4c], esi
jg 0x410a2e
cmp esi, dword [ebx + 0xc50]
jl 0x410a47
cmp esi, dword [ebx + 0xc54]
jl 0x410c0b
cmp esi, dword [ebx + 0xc58]
jl 0x410c15
cmp esi, dword [ebx + 0xc5c]
jl 0x41179e
cmp esi, dword [ebx + 0xc60]
jge 0x410716
mov edi, 0xf
lea esi, [esi]
nop
mov ecx, 0x10
sub ecx, edi
sar esi, cl
movzx ecx, word [ebx + edi*2 + 0xc04]
sub esi, ecx
movzx ecx, word [ebx + edi*2 + 0xc68]
add esi, ecx
cmp esi, 0x11f
jg 0x410716
movzx ecx, byte [ebx + esi + 0xc88]
cmp edi, ecx
jne 0x410716
mov ecx, edi
sub eax, edi
shr edx, cl
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
movzx esi, word [ebx + esi*2 + 0xda8]
mov dword [esp + 0x20], eax
jmp 0x4105a1
mov ecx, 1
mov edx, ebp
mov eax, ebx
call sym.stbi__zexpand_stbi__zbuf__char__int_
test eax, eax
je 0x410728
mov ebp, dword [ebx + 0x10]
jmp 0x410468
mov edx, dword [ebx + 0xc]
cmp esi, eax
jg 0x410948
mov ecx, esi
mov edi, edx
sub eax, esi
shr edi, cl
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edi
mov edi, 1
shl edi, cl
mov ecx, edi
sub ecx, 1
and edx, ecx
add dword [esp + 0x1c], edx
jmp 0x410525
mov eax, dword [esp + 0x20]
cmp esi, eax
jg 0x410998
mov ecx, esi
mov eax, edx
shr eax, cl
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x20]
sub eax, esi
mov dword [ebx + 8], eax
mov eax, 1
shl eax, cl
sub eax, 1
and eax, edx
add edi, eax
jmp 0x4105c0
mov eax, ecx
jmp 0x410570
mov edi, 0xb
mov ecx, 0x10
sub ecx, edi
jmp 0x410498
mov dword [esp + 0x20], esi
mov edi, dword [ebx + 4]
mov ecx, eax
jmp 0x41097c
mov eax, dword [ebx]
cmp eax, edi
jae 0x41096a
lea esi, [eax + 1]
mov dword [ebx], esi
movzx eax, byte [eax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], ecx
cmp ecx, 0x18
jg 0x410bf3
mov eax, edx
shr eax, cl
test eax, eax
je 0x410958
mov dword [ebx], edi
mov esi, dword [esp + 0x20]
mov eax, ecx
jmp 0x41087b
mov ecx, eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], eax
jmp 0x4109d8
mov eax, dword [ebx]
mov esi, dword [esp + 0x24]
cmp eax, esi
jae 0x4109c6
lea esi, [eax + 1]
mov dword [ebx], esi
movzx eax, byte [eax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], ecx
cmp ecx, 0x18
jg 0x410bfe
mov eax, edx
shr eax, cl
test eax, eax
je 0x4109b0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x20], ecx
mov dword [ebx], eax
jmp 0x4108dc
mov edi, 0xc
jmp 0x410935
mov edi, 0xd
jmp 0x410935
mov edi, 0xe
jmp 0x410935
mov ecx, 6
mov edi, 0xa
jmp 0x4107f7
mov edi, 0xf
jmp 0x410935
mov edi, 0xb
jmp 0x4107f0
mov ebx, edi
and ebx, 7
jne 0x4118cc
mov edx, dword [esp + 0x1c]
test edx, edx
jle 0x411980
mov edi, dword [esp + 0x1c]
mov edx, eax
mov byte [esp + 0x9c], al
shr edx, 8
lea ecx, [edi - 8]
test ecx, ecx
jle 0x4117bb
mov byte [esp + 0x9d], dl
mov edx, eax
shr edx, 0x10
cmp edi, 0x10
jle 0x4117bb
shr eax, 0x18
mov byte [esp + 0x9e], dl
mov edx, eax
cmp edi, 0x18
jle 0x4117bb
sub edi, 1
mov byte [esp + 0x9f], al
mov eax, edi
mov dword [esi + 0xc], 0
shr eax, 3
mov edx, eax
neg edx
lea edx, [ecx + edx*8]
mov dword [esi + 8], edx
test edx, edx
jne 0x410716
cmp eax, 3
jne 0x4119a8
movzx ebx, byte [esp + 0x9d]
movzx eax, byte [esp + 0x9c]
movzx edx, byte [esp + 0x9e]
shl ebx, 8
add ebx, eax
movzx eax, byte [esp + 0x9f]
shl eax, 8
add eax, edx
mov edx, ebx
xor edx, 0xffff
cmp eax, edx
jne 0x410716
mov eax, dword [esi]
lea edx, [eax + ebx]
cmp dword [esi + 4], edx
jb 0x410716
mov edx, dword [esi + 0x10]
lea ecx, [edx + ebx]
cmp dword [esi + 0x18], ecx
jae 0x410b47
mov ecx, ebx
mov eax, esi
call sym.stbi__zexpand_stbi__zbuf__char__int_
test eax, eax
je 0x410728
mov eax, dword [esi]
mov edx, dword [esi + 0x10]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov dword [esp], edx
call sym._memcpy
mov eax, dword [esp + 0x28]
add dword [esi], ebx
add dword [esi + 0x10], ebx
test eax, eax
je 0x4118c1
mov eax, 1
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [esi + 4]
jmp 0x410ba4
mov eax, dword [esi]
cmp eax, ebx
jae 0x410b92
lea edi, [eax + 1]
mov dword [esi], edi
movzx eax, byte [eax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [esi + 0xc], edx
mov dword [esi + 8], ecx
cmp ecx, 0x18
jg 0x410385
mov eax, edx
shr eax, cl
test eax, eax
je 0x410b80
mov dword [esi], ebx
jmp 0x410385
mov ebx, dword [esi + 4]
jmp 0x410be4
mov eax, dword [esi]
cmp eax, ebx
jae 0x410bd2
lea edi, [eax + 1]
mov dword [esi], edi
movzx eax, byte [eax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [esi + 0xc], edx
mov dword [esi + 8], ecx
cmp ecx, 0x18
jg 0x4117a8
mov eax, edx
shr eax, cl
test eax, eax
je 0x410bc0
mov dword [esi], ebx
jmp 0x410368
mov esi, dword [esp + 0x20]
mov eax, ecx
jmp 0x41087b
mov dword [esp + 0x20], ecx
mov esi, dword [esp + 0x2c]
jmp 0x4108dc
mov edi, 0xc
jmp 0x4107f0
mov edi, 0xd
jmp 0x4107f0
xor eax, eax
mov ecx, 0x11
lea edi, [esp + 0x9c]
rep stosd dword es:[edi], eax
lea edx, [esi + 0x20]
mov ecx, 0x100
mov dword [esp + 0xbc], 1
mov edi, edx
rep stosd dword es:[edi], eax
mov eax, 1
lea esi, [esi]
nop
movzx edx, byte [eax + str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b]
add eax, 1
add dword [esp + edx*4 + 0x9c], 1
cmp eax, 0x120
jne 0x410c50
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x9c], 0
cmp ecx, 2
jg 0x410716
mov edx, dword [esp + 0xa4]
cmp edx, 4
jg 0x410716
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x20], eax
cmp eax, 8
jg 0x410716
mov edi, dword [esp + 0xac]
cmp edi, 0x10
jg 0x410716
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x24], eax
cmp eax, 0x20
jg 0x410716
mov ebx, dword [esp + 0xb4]
cmp ebx, 0x40
jg 0x410716
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x2c], eax
cmp eax, 0x80
jg 0x410716
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x30], eax
cmp eax, 0x100
jg 0x410716
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x34], eax
cmp eax, 0x200
jg 0x410716
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x38], eax
cmp eax, 0x400
jg 0x410716
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x3c], eax
cmp eax, 0x800
jg 0x410716
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x40], eax
cmp eax, 0x1000
jg 0x410716
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x44], eax
cmp eax, 0x2000
jg 0x410716
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x48], eax
cmp eax, 0x4000
jg 0x410716
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x4c], eax
cmp eax, 0x8000
jg 0x410716
xor eax, eax
mov dword [esp + 0x60], 0
mov word [esi + 0x422], ax
xor eax, eax
mov word [esi + 0x486], ax
mov eax, ecx
shl eax, 0xf
mov word [esi + 0x488], cx
mov dword [esi + 0x444], eax
lea eax, [ecx + ecx]
mov dword [esp + 0x64], eax
mov word [esi + 0x424], ax
add eax, edx
test edx, edx
je 0x410deb
cmp eax, 4
jg 0x410716
mov ebp, eax
add edx, ecx
mov ecx, dword [esp + 0x20]
add eax, eax
shl ebp, 0xe
mov dword [esp + 0x68], eax
mov word [esi + 0x426], ax
add eax, ecx
mov dword [esi + 0x448], ebp
mov word [esi + 0x48a], dx
test ecx, ecx
je 0x410e1f
cmp eax, 8
jg 0x410716
mov ecx, eax
add eax, eax
shl ecx, 0xd
mov dword [esp + 0x6c], eax
mov dword [esi + 0x44c], ecx
mov ecx, dword [esp + 0x20]
mov word [esi + 0x428], ax
add eax, edi
add edx, ecx
mov word [esi + 0x48c], dx
test edi, edi
je 0x410e53
cmp eax, 0x10
jg 0x410716
mov ecx, eax
add edx, edi
mov edi, dword [esp + 0x24]
add eax, eax
shl ecx, 0xc
mov dword [esp + 0x70], eax
mov word [esi + 0x42a], ax
add eax, edi
mov dword [esi + 0x450], ecx
mov word [esi + 0x48e], dx
test edi, edi
je 0x410e87
cmp eax, 0x20
jg 0x410716
mov edi, dword [esp + 0x24]
mov ecx, eax
add eax, eax
shl ecx, 0xb
mov dword [esp + 0x74], eax
add edx, edi
mov word [esi + 0x42c], ax
add eax, ebx
mov dword [esi + 0x454], ecx
mov word [esi + 0x490], dx
test ebx, ebx
je 0x410ebb
cmp eax, 0x40
jg 0x410716
mov ecx, eax
mov edi, dword [esp + 0x2c]
add eax, eax
add edx, ebx
shl ecx, 0xa
mov dword [esp + 0x78], eax
mov word [esi + 0x42e], ax
add eax, edi
mov dword [esi + 0x458], ecx
mov word [esi + 0x492], dx
test edi, edi
je 0x410ef1
cmp eax, 0x80
jg 0x410716
mov ecx, eax
mov edi, dword [esp + 0x30]
add eax, eax
shl ecx, 9
mov dword [esp + 0x7c], eax
mov dword [esi + 0x45c], ecx
mov ecx, dword [esp + 0x2c]
mov word [esi + 0x430], ax
add eax, edi
add ecx, edx
mov word [esi + 0x494], cx
test edi, edi
je 0x410f2b
cmp eax, 0x100
jg 0x410716
mov edi, dword [esp + 0x30]
mov edx, eax
add eax, eax
shl edx, 8
mov dword [esp + 0x80], eax
add ecx, edi
mov edi, dword [esp + 0x34]
mov word [esi + 0x432], ax
mov dword [esi + 0x460], edx
mov word [esi + 0x496], cx
add eax, edi
test edi, edi
je 0x410f68
cmp eax, 0x200
jg 0x410716
mov edi, dword [esp + 0x34]
mov edx, eax
add eax, eax
shl edx, 7
mov dword [esp + 0x84], eax
add ecx, edi
mov edi, dword [esp + 0x38]
mov word [esi + 0x434], ax
mov dword [esi + 0x464], edx
mov word [esi + 0x498], cx
add eax, edi
test edi, edi
je 0x410fa5
cmp eax, 0x400
jg 0x410716
mov edi, dword [esp + 0x38]
mov edx, eax
add eax, eax
shl edx, 6
mov dword [esp + 0x88], eax
add ecx, edi
mov edi, dword [esp + 0x3c]
mov word [esi + 0x436], ax
mov dword [esi + 0x468], edx
mov word [esi + 0x49a], cx
add eax, edi
test edi, edi
je 0x410fe2
cmp eax, 0x800
jg 0x410716
mov edi, dword [esp + 0x3c]
mov edx, eax
add eax, eax
mov dword [esp + 0x8c], eax
shl edx, 5
add ecx, edi
mov edi, dword [esp + 0x40]
mov word [esi + 0x438], ax
mov dword [esi + 0x46c], edx
add eax, edi
mov word [esi + 0x49c], cx
cmp eax, 0x1000
jle 0x41101f
test edi, edi
jne 0x410716
mov edi, dword [esp + 0x40]
mov edx, eax
add eax, eax
shl edx, 4
mov dword [esp + 0x90], eax
add ecx, edi
mov edi, dword [esp + 0x44]
mov word [esi + 0x43a], ax
mov dword [esi + 0x470], edx
mov word [esi + 0x49e], cx
add eax, edi
test edi, edi
je 0x41105c
cmp eax, 0x2000
jg 0x410716
mov edi, dword [esp + 0x44]
lea edx, [eax*8]
add eax, eax
mov dword [esp + 0x94], eax
add ecx, edi
mov edi, dword [esp + 0x48]
mov word [esi + 0x43c], ax
mov dword [esi + 0x474], edx
mov word [esi + 0x4a0], cx
add eax, edi
test edi, edi
je 0x41109b
cmp eax, 0x4000
jg 0x410716
mov edi, dword [esp + 0x48]
lea edx, [eax*4]
add eax, eax
mov dword [esp + 0x98], eax
add ecx, edi
mov edi, dword [esp + 0x4c]
mov word [esi + 0x43e], ax
mov dword [esi + 0x478], edx
add eax, edi
mov word [esi + 0x4a2], cx
cmp eax, 0x8000
jle 0x4110da
test edi, edi
jne 0x410716
mov dword [esi + 0x480], 0x10000
add eax, eax
xor edi, edi
mov dword [esi + 0x47c], eax
jmp 0x411106
add ebp, 1
mov dword [esp + edx*4 + 0x5c], ebp
add edi, 1
cmp edi, 0x120
je 0x4111db
movzx edx, byte [edi + str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b]
test edx, edx
je 0x4110f7
mov ebp, dword [esp + edx*4 + 0x5c]
movzx ecx, word [esi + edx*2 + 0x420]
mov eax, ebp
sub eax, ecx
movzx ecx, word [esi + edx*2 + 0x484]
add eax, ecx
mov byte [esi + eax + 0x4a4], dl
mov word [esi + eax*2 + 0x5c4], di
cmp edx, 9
jg 0x4110f0
mov eax, edx
shl eax, 9
or eax, edi
mov word [esp + 0x20], ax
mov eax, ebp
movzx ebx, word [esp + 0x20]
sar eax, 1
mov ecx, eax
lea eax, [ebp + ebp]
and ecx, 0x5555
and eax, 0xaaaa
or eax, ecx
mov ecx, eax
shl eax, 2
sar ecx, 2
and eax, 0xcccc
and ecx, 0x3333
or eax, ecx
mov ecx, eax
shl eax, 4
sar ecx, 4
and eax, 0xf0f0
and ecx, 0xf0f
or ecx, eax
mov eax, ecx
shl ecx, 8
sar eax, 8
mov dword [esp + 0x24], eax
movzx eax, cx
mov ecx, dword [esp + 0x24]
or eax, ecx
mov ecx, 0x10
sub ecx, edx
sar eax, cl
mov ecx, edx
mov dword [esp + 0x24], eax
mov eax, 1
shl eax, cl
mov ecx, eax
mov eax, dword [esp + 0x24]
lea esi, [esi]
mov word [esi + eax*2 + 0x20], bx
add eax, ecx
cmp eax, 0x1ff
jle 0x4111c8
jmp 0x4110f0
xor eax, eax
mov ecx, 0x11
lea edi, [esp + 0x9c]
rep stosd dword es:[edi], eax
lea edx, [esi + 0x804]
mov ecx, 0x100
mov dword [esp + 0xb0], 1
mov edi, edx
rep stosd dword es:[edi], eax
mov eax, 1
lea esi, [esi]
movzx edx, byte [eax + 0x4eca00]
add eax, 1
add dword [esp + edx*4 + 0x9c], 1
cmp eax, 0x20
jne 0x411210
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x9c], 0
cmp edx, 2
jg 0x410716
mov ebx, dword [esp + 0xa4]
cmp ebx, 4
jg 0x410716
mov edi, dword [esp + 0xa8]
cmp edi, 8
jg 0x410716
mov ecx, dword [esp + 0xac]
cmp ecx, 0x10
jg 0x410716
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x20], eax
cmp eax, 0x20
jg 0x410716
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x24], eax
cmp eax, 0x40
jg 0x410716
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x2c], eax
cmp eax, 0x80
jg 0x410716
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x30], eax
cmp eax, 0x100
jg 0x410716
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x34], eax
cmp eax, 0x200
jg 0x410716
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x38], eax
cmp eax, 0x400
jg 0x410716
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x3c], eax
cmp eax, 0x800
jg 0x410716
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x40], eax
cmp eax, 0x1000
jg 0x410716
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x44], eax
cmp eax, 0x2000
jg 0x410716
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x48], eax
cmp eax, 0x4000
jg 0x410716
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x4c], eax
cmp eax, 0x8000
jg 0x410716
xor eax, eax
xor ebp, ebp
mov dword [esp + 0x60], 0
mov word [esi + 0xc6a], ax
mov eax, edx
shl eax, 0xf
mov word [esi + 0xc06], bp
mov dword [esi + 0xc28], eax
lea eax, [edx + edx]
mov dword [esp + 0x64], eax
mov word [esi + 0xc08], ax
add eax, ebx
mov word [esi + 0xc6c], dx
cmp eax, 4
jle 0x4113a9
test ebx, ebx
jne 0x410716
mov ebp, eax
add eax, eax
add edx, ebx
mov dword [esp + 0x68], eax
shl ebp, 0xe
mov word [esi + 0xc0a], ax
add eax, edi
mov dword [esi + 0xc2c], ebp
mov word [esi + 0xc6e], dx
cmp eax, 8
jle 0x4113d9
test edi, edi
jne 0x410716
mov ebx, eax
add edx, edi
add eax, eax
shl ebx, 0xd
mov dword [esp + 0x6c], eax
mov word [esi + 0xc0c], ax
add eax, ecx
mov dword [esi + 0xc30], ebx
mov word [esi + 0xc70], dx
test ecx, ecx
je 0x411409
cmp eax, 0x10
jg 0x410716
mov edi, dword [esp + 0x20]
mov ebx, eax
add eax, eax
add edx, ecx
mov dword [esp + 0x70], eax
shl ebx, 0xc
mov word [esi + 0xc0e], ax
add eax, edi
mov dword [esi + 0xc34], ebx
mov word [esi + 0xc72], dx
cmp eax, 0x20
jle 0x41143d
test edi, edi
jne 0x410716
mov edi, dword [esp + 0x20]
mov ecx, eax
add eax, eax
mov dword [esp + 0x74], eax
shl ecx, 0xb
add edx, edi
mov edi, dword [esp + 0x24]
mov word [esi + 0xc10], ax
mov dword [esi + 0xc38], ecx
add eax, edi
mov word [esi + 0xc74], dx
cmp eax, 0x40
jle 0x411475
test edi, edi
jne 0x410716
mov ecx, eax
mov edi, dword [esp + 0x2c]
add eax, eax
shl ecx, 0xa
mov dword [esp + 0x78], eax
mov dword [esi + 0xc3c], ecx
mov ecx, dword [esp + 0x24]
mov word [esi + 0xc12], ax
add eax, edi
add ecx, edx
mov word [esi + 0xc76], cx
cmp eax, 0x80
jle 0x4114af
test edi, edi
jne 0x410716
mov edi, dword [esp + 0x2c]
mov edx, eax
add eax, eax
mov dword [esp + 0x7c], eax
shl edx, 9
add ecx, edi
mov edi, dword [esp + 0x30]
mov word [esi + 0xc14], ax
mov dword [esi + 0xc40], edx
add eax, edi
mov word [esi + 0xc78], cx
cmp eax, 0x100
jle 0x4114e9
test edi, edi
jne 0x410716
mov edi, dword [esp + 0x30]
mov edx, eax
add eax, eax
shl edx, 8
mov dword [esp + 0x80], eax
add ecx, edi
mov edi, dword [esp + 0x34]
mov word [esi + 0xc16], ax
mov dword [esi + 0xc44], edx
mov word [esi + 0xc7a], cx
add eax, edi
test edi, edi
je 0x411526
cmp eax, 0x200
jg 0x410716
mov edi, dword [esp + 0x34]
mov edx, eax
add eax, eax
shl edx, 7
mov dword [esp + 0x84], eax
add ecx, edi
mov edi, dword [esp + 0x38]
mov word [esi + 0xc18], ax
mov dword [esi + 0xc48], edx
mov word [esi + 0xc7c], cx
add eax, edi
test edi, edi
je 0x411563
cmp eax, 0x400
jg 0x410716
mov edi, dword [esp + 0x38]
mov edx, eax
add eax, eax
shl edx, 6
mov dword [esp + 0x88], eax
add ecx, edi
mov edi, dword [esp + 0x3c]
mov word [esi + 0xc1a], ax
mov dword [esi + 0xc4c], edx
mov word [esi + 0xc7e], cx
add eax, edi
test edi, edi
je 0x4115a0
cmp eax, 0x800
jg 0x410716
mov edi, dword [esp + 0x3c]
mov edx, eax
add eax, eax
shl edx, 5
mov dword [esp + 0x8c], eax
add ecx, edi
mov edi, dword [esp + 0x40]
mov word [esi + 0xc1c], ax
mov dword [esi + 0xc50], edx
mov word [esi + 0xc80], cx
add eax, edi
test edi, edi
je 0x4115dd
cmp eax, 0x1000
jg 0x410716
mov edi, dword [esp + 0x40]
mov edx, eax
add eax, eax
shl edx, 4
mov dword [esp + 0x90], eax
add ecx, edi
mov edi, dword [esp + 0x44]
mov word [esi + 0xc1e], ax
mov dword [esi + 0xc54], edx
mov word [esi + 0xc82], cx
add eax, edi
test edi, edi
je 0x41161a
cmp eax, 0x2000
jg 0x410716
mov edi, dword [esp + 0x44]
lea edx, [eax*8]
add eax, eax
mov dword [esp + 0x94], eax
add ecx, edi
mov edi, dword [esp + 0x48]
mov word [esi + 0xc20], ax
mov dword [esi + 0xc58], edx
mov word [esi + 0xc84], cx
add eax, edi
test edi, edi
je 0x411659
cmp eax, 0x4000
jg 0x410716
mov edi, dword [esp + 0x48]
lea edx, [eax*4]
add eax, eax
mov dword [esp + 0x98], eax
add ecx, edi
mov edi, dword [esp + 0x4c]
mov word [esi + 0xc22], ax
mov dword [esi + 0xc5c], edx
add eax, edi
mov word [esi + 0xc86], cx
cmp eax, 0x8000
jle 0x411698
test edi, edi
jne 0x410716
mov dword [esi + 0xc64], 0x10000
add eax, eax
xor edi, edi
mov dword [esi + 0xc60], eax
jmp 0x4116c1
add ebx, 1
mov dword [esp + edx*4 + 0x5c], ebx
add edi, 1
cmp edi, 0x20
je 0x411977
movzx ebp, byte [edi + 0x4eca00]
mov eax, ebp
movzx edx, al
test edx, edx
je 0x4116b5
mov ebx, dword [esp + edx*4 + 0x5c]
movzx ecx, word [esi + edx*2 + 0xc04]
mov eax, ebx
sub eax, ecx
movzx ecx, word [esi + edx*2 + 0xc68]
add eax, ecx
mov ecx, ebp
mov byte [esi + eax + 0xc88], cl
mov word [esi + eax*2 + 0xda8], di
cmp edx, 9
jg 0x4116ae
mov eax, ebp
shl eax, 9
or eax, edi
mov word [esp + 0x20], ax
mov eax, ebx
sar eax, 1
mov ecx, eax
lea eax, [ebx + ebx]
and ecx, 0x5555
and eax, 0xaaaa
or eax, ecx
mov ecx, eax
shl eax, 2
sar ecx, 2
and eax, 0xcccc
and ecx, 0x3333
or eax, ecx
mov ecx, eax
shl eax, 4
sar ecx, 4
and eax, 0xf0f0
and ecx, 0xf0f
or ecx, eax
mov eax, ecx
shl ecx, 8
sar eax, 8
mov dword [esp + 0x24], eax
movzx eax, cx
mov ecx, dword [esp + 0x24]
or eax, ecx
mov ecx, 0x10
sub ecx, edx
sar eax, cl
mov ecx, ebp
movzx ebp, word [esp + 0x20]
mov dword [esp + 0x24], eax
mov eax, 1
shl eax, cl
mov ecx, eax
mov eax, dword [esp + 0x24]
lea esi, [esi]
nop
mov word [esi + eax*2 + 0x804], bp
add eax, ecx
cmp eax, 0x1ff
jle 0x411788
jmp 0x4116ae
mov edi, 0xe
jmp 0x4107f0
mov eax, edx
sub ecx, 1
shr edx, 1
and eax, 1
mov dword [esp + 0x28], eax
jmp 0x410385
mov eax, dword [esp + 0x1c]
mov dword [esi + 0xc], edx
sub eax, 1
shr eax, 3
mov ebx, eax
neg ebx
lea ecx, [ecx + ebx*8]
mov dword [esi + 8], ecx
test ecx, ecx
jne 0x410716
add eax, 1
mov dword [esp + 0x1c], eax
mov edx, dword [esi + 4]
mov eax, dword [esi]
cmp eax, edx
jb 0x411810
mov edi, dword [esp + 0x1c]
mov byte [esp + edi + 0x9c], 0
lea eax, [edi + 1]
cmp edi, 3
jne 0x411853
jmp 0x410ade
mov dword [esp + 0x1c], 5
mov ebp, dword [esp + 0x1c]
lea ebx, [eax + 1]
mov dword [esi], ebx
movzx ecx, byte [eax]
lea edi, [ebp + 1]
mov dword [esp + 0x20], edi
mov byte [esp + ebp + 0x9c], cl
cmp ebp, 3
je 0x410ade
cmp ebx, edx
jb 0x4118f3
mov edx, dword [esp + 0x20]
lea eax, [ebp + 2]
mov byte [esp + edx + 0x9c], 0
cmp ebp, 2
je 0x410ade
mov edx, 4
lea ecx, [esp + eax + 0x9c]
sub edx, eax
je 0x410ade
xor eax, eax
test dl, 1
je 0x41187e
mov eax, 1
mov byte [ecx], 0
cmp eax, edx
jae 0x410ade
mov byte [ecx + eax], 0
mov byte [ecx + eax + 1], 0
add eax, 2
cmp eax, edx
jae 0x410ade
mov byte [ecx + eax], 0
mov byte [ecx + eax + 1], 0
add eax, 2
cmp eax, edx
jb 0x41187e
jmp 0x410ade
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x10], ebp
mov esi, ebx
test eax, eax
jne 0x410b68
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
jmp 0x410360
cmp edi, ebx
jl 0x4119d0
sub dword [esp + 0x1c], ebx
mov ecx, ebx
mov edi, dword [esp + 0x1c]
shr eax, cl
mov dword [esi + 0xc], eax
mov dword [esi + 8], edi
test edi, edi
jne 0x410a68
jmp 0x4117e1
lea ecx, [ebp + 2]
lea ebx, [eax + 2]
mov dword [esi], ebx
mov dword [esp + 0x20], ecx
movzx ecx, byte [eax + 1]
mov byte [esp + ebp + 0x9d], cl
cmp ebp, 2
je 0x410ade
cmp ebx, edx
jb 0x411940
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x1c], 1
mov byte [esp + eax + 0x9c], 0
mov eax, 3
jne 0x411853
jmp 0x410ade
lea ecx, [eax + 3]
mov edi, dword [esp + 0x20]
mov dword [esi], ecx
movzx ebx, byte [eax + 2]
mov byte [esp + edi + 0x9c], bl
test ebp, ebp
jne 0x410ade
xor ebx, ebx
cmp ecx, edx
jae 0x41196b
lea edx, [eax + 4]
mov dword [esi], edx
movzx ebx, byte [eax + 3]
mov byte [esp + 0x9f], bl
jmp 0x410ade
mov eax, dword [esp + 0x1c]
jmp 0x4103c8
jne 0x410716
mov edx, dword [esi + 4]
mov eax, dword [esi]
cmp eax, edx
jb 0x411810
mov byte [esp + 0x9c], 0
mov eax, 1
jmp 0x411853
mov edx, dword [esi + 4]
mov eax, dword [esi]
cmp eax, edx
jb 0x411808
mov byte [esp + 0xa1], 0
mov eax, 6
jmp 0x411853
mov ecx, edi
mov edi, dword [esi + 4]
jmp 0x4119fb
mov edx, dword [esi]
cmp edx, edi
jae 0x4119e9
lea ebp, [edx + 1]
mov dword [esi], ebp
movzx edx, byte [edx]
shl edx, cl
or eax, edx
add ecx, 8
mov dword [esi + 0xc], eax
mov dword [esi + 8], ecx
cmp ecx, 0x18
jg 0x411a88
mov edx, eax
shr edx, cl
test edx, edx
je 0x4119d7
mov dword [esp + 0x1c], ecx
mov dword [esi], edi
sub dword [esp + 0x1c], ebx
mov ecx, ebx
mov edi, dword [esp + 0x1c]
shr eax, cl
mov dword [esi + 0xc], eax
mov dword [esi + 8], edi
jmp 0x410a5c
mov ecx, dword [eax]
mov ebx, dword [eax + 4]
cmp ecx, ebx
jae 0x410716
lea esi, [ecx + 1]
mov dword [eax], esi
movzx eax, byte [ecx]
mov edx, eax
cmp esi, ebx
jae 0x410716
lea edi, [ecx + 2]
mov dword [ebp], edi
movzx esi, byte [ecx + 1]
mov ecx, esi
cmp edi, ebx
jae 0x410716
shl eax, 8
add eax, esi
imul eax, eax, 0xbdef7bdf
cmp eax, 0x8421084
ja 0x410716
and ecx, 0x20
jne 0x410716
and edx, 0xf
cmp dl, 8
jne 0x410716
jmp 0x410344
mov dword [esp + 0x1c], ecx
jmp 0x411a09