Function at 0x4331be
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0x10c
mov dword [esp + 0x44], ecx
mov ecx, dword [ecx]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x128]
add ecx, edx
mov dword [esp + 0x2c], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x124]
add ecx, eax
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x12c]
and ecx, 4
mov dword [esp + 0x4c], ecx
jne 0x432768
mov edx, dword [esp + 0x124]
sub edx, dword [esp + 0x120]
lea esi, [eax + edx - 1]
lea ebx, [eax + edx]
mov dword [esp + 0x50], esi
test esi, ebx
jne 0x4329d7
mov eax, dword [esp + 0x120]
cmp dword [esp + 0x124], eax
jb 0x4329d7
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 4]
mov esi, dword [eax + 0x20]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x38]
mov dword [esp + 0x38], esi
mov esi, dword [eax + 0x28]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax]
mov dword [esp + 0x40], ecx
cmp eax, 0x35
ja case.0x43275c.4
jmp dword [eax*4 + 0x48c0ac]
mov dword [esp + 0x50], 0xffffffff
xor ebx, ebx
jmp 0x432713
mov dword [esp + 0x30], 0
xor edx, edx
mov esi, 0xffffffff
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x38]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x24], eax
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x40]
mov dword [ecx + 0x3c], eax
mov eax, dword [esp + 0x44]
mov dword [eax], edx
mov eax, dword [esp + 0x128]
mov dword [eax], ebx
cmp esi, 0xffffffff
je 0x4329a6
mov eax, dword [ecx + 0x1c]
movzx ebp, ax
shr eax, 0x10
mov edi, eax
mov eax, 0x5e6ea9af
mul ebx
mov ecx, edx
shr ecx, 0xb
imul eax, ecx, 0x15b0
mov ecx, ebx
sub ecx, eax
test ebx, ebx
je 0x43297f
cmp ecx, 7
jbe 0x4329c5
lea esi, [esi]
nop
lea edx, [ecx - 8]
mov ebx, dword [esp + 0x124]
mov dword [esp + 0x38], ecx
mov eax, edx
mov dword [esp + 0x2c], edi
shr eax, 3
mov dword [esp + 0x40], esi
lea eax, [ebx + eax*8 + 8]
mov dword [esp + 0x3c], edx
mov edx, ebx
mov dword [esp + 0x28], eax
lea esi, [esi]
movzx eax, byte [edx]
movzx ecx, byte [edx + 2]
add edx, 8
add eax, ebp
movzx ebp, byte [edx - 1]
mov esi, eax
movzx eax, byte [edx - 7]
mov dword [esp + 0x1c], esi
add eax, esi
movzx esi, byte [edx - 4]
lea edi, [ecx + eax]
mov ebx, edi
movzx edi, byte [edx - 5]
mov dword [esp + 0x20], ebx
add edi, ebx
movzx ebx, byte [edx - 3]
lea ecx, [esi + edi]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x24], ecx
add ebx, ecx
movzx ecx, byte [edx - 2]
add eax, esi
mov esi, dword [esp + 0x20]
add ecx, ebx
add eax, esi
add ebp, ecx
add eax, edi
mov edi, dword [esp + 0x24]
add eax, edi
add eax, ebx
add eax, ecx
add eax, ebp
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x432838
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x40]
and edx, 0xfffffff8
add edx, 8
cmp edx, ecx
jae 0x4329b8
mov ebx, dword [esp + 0x28]
movzx eax, byte [ebx]
add ebp, eax
lea eax, [edx + 1]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 1]
add ebp, eax
lea eax, [edx + 2]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 2]
add ebp, eax
lea eax, [edx + 3]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 3]
add ebp, eax
lea eax, [edx + 4]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 4]
add ebp, eax
lea eax, [edx + 5]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 5]
add ebp, eax
lea eax, [edx + 6]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 6]
add ebp, eax
lea eax, [edx + 7]
add edi, ebp
cmp eax, ecx
jae 0x432934
movzx eax, byte [ebx + 7]
add ebp, eax
add edi, ebp
mov ebx, dword [esp + 0x28]
mov eax, ecx
sub eax, edx
add ebx, eax
mov dword [esp + 0x124], ebx
mov ebx, 0x80078071
mov eax, ebp
sub dword [esp + 0x30], ecx
mov ecx, 0x15b0
mul ebx
mov eax, edi
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebp, edx
mul ebx
mov eax, dword [esp + 0x30]
mov ebx, edx
shr ebx, 0xf
imul ebx, ebx, 0xfff1
sub edi, ebx
test eax, eax
jne 0x432808
mov eax, edi
mov ecx, dword [esp + 0x34]
shl eax, 0x10
add eax, ebp
mov dword [ecx + 0x1c], eax
test esi, esi
jne 0x4329a6
test byte [esp + 0x12c], 1
je 0x4329a6
cmp eax, dword [ecx + 0x10]
mov eax, 0xfffffffe
cmovne esi, eax
add esp, 0x10c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x28]
mov dword [esp + 0x124], eax
jmp 0x432945
mov eax, dword [esp + 0x124]
xor edx, edx
mov dword [esp + 0x28], eax
jmp 0x4328b8
mov eax, dword [esp + 0x128]
mov esi, 0xfffffffd
mov dword [eax], 0
mov eax, dword [esp + 0x44]
mov dword [eax], 0
jmp 0x4329a6
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433923
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
cmp eax, 2
ja 0x432a5f
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433932
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
movzx eax, byte [edi]
mov ecx, esi
add esi, 8
mov dword [esp + 0x1c], esi
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [edi + 1]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
sub dword [esp + 0x1c], 3
mov esi, dword [esp + 0x1c]
mov eax, ecx
shr ecx, 3
and eax, 7
mov dword [esp + 0x20], ecx
mov dword [edi + 0x14], eax
shr eax, 1
mov dword [edi + 0x18], eax
jne 0x433b7f
mov ecx, esi
and ecx, 7
cmp esi, ecx
jae 0x432ac6
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433bb7
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
or dword [esp + 0x20], eax
mov eax, esi
mov ecx, esi
add eax, 8
lea esi, [edi + 1]
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], eax
and dword [esp + 0x1c], 0xfffffff8
mov dword [esp + 0x28], 0
shr dword [esp + 0x20], cl
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4342ce
cmp eax, 7
jbe 0x434378
sub eax, 8
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
mov eax, ecx
shr eax, 8
mov byte [esi + edi + 0x2920], cl
mov dword [esp + 0x20], eax
add dword [esp + 0x28], 1
mov eax, dword [esp + 0x28]
cmp eax, 3
jbe 0x432ad7
mov eax, dword [esp + 0x34]
movzx ecx, word [eax + 0x2920]
movzx eax, word [eax + 0x2922]
mov word [esp + 0x54], ax
not eax
mov dword [esp + 0x28], ecx
cmp cx, ax
je 0x432b7b
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x124]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], eax
sub edx, ebp
mov eax, dword [esp + 0x34]
mov esi, 0xffffffff
mov dword [eax], 0x27
jmp 0x432787
movzx ebx, byte [esp + 0x38]
lea ecx, [eax + 1]
sub dword [esp + 0x28], 1
mov dword [esp + 0x30], ecx
mov byte [eax], bl
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4338c8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4338bc
mov eax, dword [esp + 0x1c]
cmp eax, 7
jbe 0x43453b
sub eax, 8
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
movzx esi, cl
shr ecx, 8
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x48]
cmp eax, ecx
jb 0x432b68
mov ecx, dword [esp + 0x34]
mov dword [ecx], 0x34
mov edx, dword [esp + 0x24]
sub eax, dword [esp + 0x124]
mov esi, 2
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x432787
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433f55
lea eax, [ebp + 1]
movzx edi, byte [ebp]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 8]
mov dword [eax + 0xc], edi
mov eax, ecx
shl eax, 8
add eax, edi
mov edx, 0x8421085
and edi, 0x20
mov esi, eax
mul edx
mov eax, esi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
mov eax, esi
sub eax, edx
or edi, eax
je 0x432d01
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x433910
mov dword [esp + 0x28], 1
mov edx, 1
shr ecx, 4
mov eax, 1
add ecx, 8
shl eax, cl
cmp eax, 0x8000
ja 0x433910
mov eax, ebx
shr eax, cl
test eax, eax
je 0x433910
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
test edx, edx
jne 0x43454d
cmp dword [esp + 0x1c], 2
ja 0x432a5f
jmp 0x432a30
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x432d8c
lea eax, [ebp + 1]
movzx ecx, byte [ebp]
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
mov dword [edx + 8], ecx
cmp esi, eax
jb 0x433c2f
mov edx, 1
mov eax, dword [esp + 0x34]
test byte [esp + 0x12c], 2
jne 0x434129
mov ecx, dword [eax + 8]
mov dword [eax + 0xc], 0
mov eax, ecx
shl eax, 8
imul eax, eax, 0xbdef7bdf
cmp eax, 0x8421084
ja 0x432c3c
mov eax, ecx
and eax, 0xf
cmp eax, 8
jne 0x432c3c
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x434794
mov eax, dword [esp + 0x124]
mov dword [esp + 0x28], 0
mov dword [esp + 0x30], eax
jmp 0x432c8c
mov ecx, dword [esp + 0x12c]
mov esi, dword [esp + 0x34]
and ecx, 1
mov dword [esi + 0xc], 0
mov dword [esi + 8], 0
mov dword [esi + 0x1c], 1
mov dword [esi + 0x10], 1
mov dword [esp + 0x1c], ecx
je 0x433f0d
mov ecx, dword [esp + 0x2c]
cmp ebp, ecx
jb 0x43416a
mov dword [esp + 0x20], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x12c]
and ecx, 2
je 0x43418e
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], 0
xor edx, edx
mov esi, 1
mov dword [eax], 1
jmp 0x432787
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433ba8
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
mov ecx, eax
and ecx, 7
cmp eax, ecx
jb 0x432a93
jmp 0x432ac6
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433c7d
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
cmp eax, 2
ja 0x433f60
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433c8c
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
movzx eax, byte [edi]
mov ecx, esi
add esi, 8
mov dword [esp + 0x1c], esi
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 0x34]
lea eax, [edi + 1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x34]
sub dword [esp + 0x1c], 3
mov edx, eax
shr eax, 3
add esi, 1
mov dword [esp + 0x20], eax
movzx eax, byte [esi + 0x48c39b]
and edx, 7
mov dword [esp + 0x28], esi
mov byte [edi + eax + 0x1b80], dl
cmp dword [esp + 0x28], ecx
jb 0x43452b
mov eax, dword [esp + 0x34]
mov dword [eax + 0x34], 0x13
mov esi, dword [eax + 0x18]
test esi, esi
jns 0x434558
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
sub eax, esi
cmp eax, 3
jle 0x434995
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
sub eax, ecx
cmp eax, 1
jle 0x43394f
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x54], ebp
mov edi, esi
jmp 0x432f93
mov ebp, esi
sar ebp, 9
mov ecx, ebp
mov dword [esp + 0x28], esi
sub ebx, ebp
shr edx, cl
test esi, 0x100
jne 0x434a1e
cmp ebx, 0xe
ja 0x432f31
movzx eax, word [edi]
mov ecx, ebx
add edi, 2
add ebx, 0x10
shl eax, cl
or edx, eax
mov ecx, dword [esp + 0x34]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x160]
test eax, eax
js 0x434309
mov ebp, eax
sar ebp, 9
mov ecx, ebp
sub ebx, ebp
mov ebp, dword [esp + 0x30]
shr edx, cl
mov ecx, esi
mov byte [ebp], cl
test ah, 1
jne 0x4349fe
mov byte [ebp + 1], al
mov eax, dword [esp + 0x2c]
mov ecx, ebp
add ecx, 2
sub eax, edi
mov dword [esp + 0x30], ecx
cmp eax, 3
jle 0x434985
mov eax, dword [esp + 0x48]
sub eax, ecx
cmp eax, 1
jle 0x434937
cmp ebx, 0xe
ja 0x432fa7
movzx eax, word [edi]
mov ecx, ebx
add edi, 2
add ebx, 0x10
shl eax, cl
or edx, eax
mov esi, dword [esp + 0x34]
mov eax, edx
and eax, 0x3ff
movsx esi, word [esi + eax*2 + 0x160]
test esi, esi
jns 0x432f02
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x34]
mov ebp, 0xa
mov ecx, ebp
mov ebx, edx
add ebp, 1
shr ebx, cl
mov ecx, ebx
and ecx, 1
sub ecx, esi
movsx esi, word [eax + ecx*2 + 0x95e]
test esi, esi
js 0x432fcf
mov ebx, dword [esp + 0x1c]
jmp 0x432f07
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433cea
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
mov edi, esi
cmp eax, esi
jae 0x4339ec
mov esi, dword [esp + 0x2c]
cmp dword [esp + 0x24], esi
jae 0x433cf9
mov esi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x433021
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433e89
lea eax, [ebp + 1]
mov dword [esp + 0x30], 0
movzx edx, byte [ebp]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x34]
add dword [esp + 0x28], 1
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x48], eax
shl eax, 8
or eax, edx
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x28]
cmp eax, 3
ja 0x433c72
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4344c4
cmp eax, 7
jbe 0x434546
sub eax, 8
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
movzx edx, al
shr eax, 8
mov dword [esp + 0x20], eax
jmp 0x433087
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433e68
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], 0
lea ecx, [eax + 8]
cmp ecx, 7
ja 0x4330c8
mov esi, dword [esp + 0x2c]
cmp dword [esp + 0x24], esi
jb 0x4347a3
test byte [esp + 0x12c], 2
mov dword [esp + 0x1c], ecx
je 0x4330c8
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
sub edx, ebp
mov esi, 1
mov dword [eax], 0x29
jmp 0x432787
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433efd
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov ecx, dword [esp + 0x1c]
add ecx, 8
cmp ecx, 7
ja 0x432bab
mov edi, dword [esp + 0x2c]
cmp dword [esp + 0x24], edi
jb 0x4349e1
mov dword [esp + 0x1c], ecx
test byte [esp + 0x12c], 2
je 0x43316d
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov esi, 1
sub eax, dword [esp + 0x124]
mov dword [ecx], 0x33
sub edx, ebp
mov dword [esp + 0x30], eax
jmp 0x432787
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433c03
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
cmp eax, esi
jae 0x433aab
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433c12
mov esi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x4331eb
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433d89
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], 0
mov ecx, eax
and ecx, 7
cmp eax, ecx
jae 0x43328e
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jb 0x4349b7
test byte [esp + 0x12c], 2
jne 0x4349ae
mov eax, dword [esp + 0x1c]
mov ecx, eax
add eax, 8
mov dword [esp + 0x1c], eax
and dword [esp + 0x1c], 0xfffffff8
mov dword [esp + 0x28], 0
shr dword [esp + 0x20], cl
jmp 0x4330ac
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433ca9
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
cmp eax, esi
jae 0x433dbb
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433cb8
mov esi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x4332d1
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433d16
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
cmp eax, 0xe
ja 0x433fb2
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
and eax, 0x3ff
movsx eax, word [esi + eax*2 + 0x1ca0]
mov ecx, eax
test eax, eax
js 0x434253
mov edx, eax
mov esi, dword [esp + 0x1c]
sar edx, 9
sub edx, 1
cmp edx, esi
jb 0x433fd1
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433d25
mov esi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x43333d
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433ebf
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov esi, dword [esp + 0x124]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
cmp eax, 0xe
ja 0x43395e
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x160]
mov ecx, eax
test eax, eax
js 0x4341d6
mov edx, eax
mov edi, dword [esp + 0x1c]
sar edx, 9
sub edx, 1
cmp edx, edi
jb 0x43397d
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433eca
mov edi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
movzx eax, byte [edi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [edi + 1]
mov dword [esp + 0x24], eax
jmp 0x4333d9
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433c46
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
cmp eax, 0xe
ja 0x433a4f
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
and eax, 0x3ff
movsx edx, word [edi + eax*2 + 0xf00]
mov ecx, edx
test edx, edx
js 0x43405a
sar edx, 9
mov esi, dword [esp + 0x1c]
lea eax, [edx - 1]
mov ebx, edx
cmp eax, esi
jb 0x433a73
mov edi, dword [esp + 0x2c]
cmp dword [esp + 0x24], edi
jae 0x433c55
mov esi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x43347d
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433d57
lea eax, [ebp + 1]
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
mov byte [ecx + esi + 0x2920], al
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
jmp 0x432b0f
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433bd4
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
movsx ebx, byte [eax + 0x48c0a0]
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov edx, ebx
mov dword [esp + 0x30], eax
add dword [esp + 0x1c], 8
mov eax, dword [esp + 0x1c]
cmp eax, ebx
jae 0x4335a1
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433be3
mov esi, dword [esp + 0x24]
movzx ecx, byte [esp + 0x1c]
add dword [esp + 0x1c], 8
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
cmp eax, ebx
jb 0x43356d
mov ecx, edx
mov eax, 1
mov esi, dword [esp + 0x20]
sub dword [esp + 0x1c], ebx
shl eax, cl
sub eax, 1
and eax, esi
shr esi, cl
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x28]
add eax, dword [esi*4 + 0x48c3b0]
mov dword [ecx + esi*4 + 0x2c], eax
add esi, 1
mov dword [esp + 0x28], esi
cmp esi, 2
ja 0x4344e5
movsx ebx, byte [esi + 0x48c0a0]
mov edx, ebx
cmp dword [esp + 0x1c], ebx
jae 0x4335a1
jmp 0x43356d
mov eax, dword [esp + 0x2c]
cmp ebp, eax
jae 0x433f41
lea eax, [ebp + 1]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp]
shl eax, cl
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + 8]
cmp ecx, 7
ja 0x432af3
mov esi, dword [esp + 0x2c]
cmp dword [esp + 0x24], esi
jb 0x434777
mov dword [esp + 0x1c], ecx
test byte [esp + 0x12c], 2
je 0x433621
mov eax, dword [esp + 0x34]
mov dword [eax], 6
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov esi, 1
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x432787
mov dword [esp + 0x24], ebp
mov esi, dword [esp + 0x124]
mov eax, dword [esp + 0x48]
cmp esi, eax
jae 0x434035
lea eax, [esi + 1]
mov dword [esp + 0x30], eax
movzx eax, byte [esp + 0x28]
mov byte [esi], al
jmp 0x432ec9
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, 0x15
mov esi, 0xffffffff
mov ecx, dword [esp + 0x34]
mov dword [ecx], eax
jmp 0x432787
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, 0x23
mov esi, 0xffffffff
jmp 0x4336b4
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, 0x11
mov esi, 0xffffffff
jmp 0x4336b4
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, dword [esp + 0x34]
mov esi, 0xffffffff
mov dword [eax], 0xa
jmp 0x432787
mov eax, dword [esp + 0x124]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x24], ebp
cmp eax, ecx
jae 0x433768
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x38]
lea edi, [eax + 1]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x120]
lea ebx, [ecx + 1]
sub ecx, esi
mov edx, ecx
mov ecx, dword [esp + 0x50]
and edx, ecx
movzx edx, byte [edi + edx]
mov byte [eax], dl
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4344b3
sub eax, 1
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
cmp eax, ecx
jb 0x43371c
mov esi, dword [esp + 0x34]
mov dword [esi], 0x35
jmp 0x432bcf
xor edx, edx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], 0
mov esi, 0xffffffff
mov dword [eax], 0x24
jmp 0x432787
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, dword [esp + 0x34]
mov esi, 0xffffffff
mov dword [eax], 0x25
jmp 0x432787
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x124]
jmp 0x432bbd
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, dword [esp + 0x34]
xor esi, esi
mov dword [eax], 0x22
jmp 0x432787
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x30], ecx
jae 0x434141
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jb 0x433876
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
test byte [esp + 0x12c], 2
je 0x433851
mov eax, dword [esp + 0x34]
mov esi, 1
mov dword [eax], 0x26
jmp 0x432787
mov dword [esp + 0x30], 0
xor edx, edx
jmp 0x432b54
mov dword [esp + 0x30], 0
xor edx, edx
mov eax, dword [esp + 0x34]
mov esi, 0xffffffff
mov dword [eax], 0x28
jmp 0x432787
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
jmp 0x4337fb
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x48]
mov edx, ecx
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
sub eax, edi
mov dword [esp], edi
sub edx, ecx
mov dword [esp + 4], ecx
cmp edx, eax
cmovbe eax, edx
cmp eax, esi
cmova eax, esi
mov esi, ecx
mov dword [esp + 8], eax
mov ebx, eax
add edi, ebx
call sub.msvcrt.dll_memcpy
mov ecx, esi
sub dword [esp + 0x28], ebx
add ecx, ebx
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x4337ed
mov eax, dword [esp + 0x34]
test byte [eax + 0x14], 1
je 0x432c8c
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 1
je 0x433c72
mov eax, dword [esp + 0x1c]
mov ecx, eax
and ecx, 7
cmp eax, ecx
jae 0x43328e
jmp 0x433265
mov edx, dword [esp + 0x24]
mov dword [esp + 0x28], 1
sub edx, ebp
jmp 0x433779
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x432a22
mov eax, dword [esp + 0x34]
mov dword [eax], 3
jmp 0x433657
cmp dword [esp + 0x1c], 0xe
jbe 0x434950
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x160]
mov ecx, eax
test eax, eax
js 0x434227
sar eax, 9
mov edx, eax
mov eax, ecx
and eax, 0x1ff
mov ecx, edx
sub dword [esp + 0x1c], edx
mov dword [esp + 0x28], eax
shr dword [esp + 0x20], cl
cmp eax, 0xff
jle 0x433681
and dword [esp + 0x28], 0x1ff
mov eax, dword [esp + 0x28]
cmp eax, 0x100
je 0x4347c9
sub eax, 0x101
mov ecx, dword [eax*4 + 0x48c320]
mov eax, dword [eax*4 + 0x48c2a0]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x28], eax
test ecx, ecx
je 0x4347c0
cmp dword [esp + 0x1c], ecx
mov dword [esp + 0x30], esi
jb 0x433038
mov edi, ecx
mov ecx, edi
mov eax, 1
mov esi, dword [esp + 0x20]
sub dword [esp + 0x1c], edi
shl eax, cl
sub eax, 1
and eax, esi
shr esi, cl
add dword [esp + 0x28], eax
mov dword [esp + 0x20], esi
cmp dword [esp + 0x1c], 0xe
ja 0x433a4f
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
sub eax, esi
cmp eax, 1
jle 0x43348f
mov edi, dword [esp + 0x1c]
movzx eax, byte [esi + 1]
add esi, 2
movzx edx, byte [esi - 2]
mov dword [esp + 0x24], esi
lea ecx, [edi + 8]
shl eax, cl
mov ecx, edi
add edi, 0x10
shl edx, cl
mov dword [esp + 0x1c], edi
or eax, edx
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
and eax, 0x3ff
movsx edx, word [esi + eax*2 + 0xf00]
mov ecx, edx
test edx, edx
js 0x4340fd
sar edx, 9
mov ebx, edx
mov edx, ecx
and edx, 0x1ff
mov ecx, ebx
mov edi, dword [edx*4 + 0x48c1a0]
shr dword [esp + 0x20], cl
mov ecx, dword [edx*4 + 0x48c220]
sub dword [esp + 0x1c], ebx
mov dword [esp + 0x38], edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x433acf
cmp eax, ecx
jb 0x433200
mov edi, dword [esp + 0x3c]
mov eax, 1
mov esi, dword [esp + 0x20]
sub dword [esp + 0x1c], edi
mov ecx, edi
shl eax, cl
sub eax, 1
and eax, esi
shr esi, cl
add dword [esp + 0x38], eax
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x30]
sub ebx, dword [esp + 0x120]
cmp ebx, eax
jae 0x433aee
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x4341b8
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x50]
mov eax, ebx
mov esi, dword [esp + 0x30]
sub eax, ecx
and eax, edi
add eax, dword [esp + 0x120]
mov edx, esi
mov edi, dword [esp + 0x28]
cmp esi, eax
cmovb edx, eax
add edx, edi
cmp dword [esp + 0x48], edx
jb 0x433745
movzx edx, byte [eax]
mov ecx, edi
sub edi, 3
add eax, 3
mov byte [esi], dl
movzx edx, byte [eax - 2]
mov byte [esi + 1], dl
movzx edx, byte [eax - 1]
mov byte [esi + 2], dl
mov edx, esi
lea esi, [esi + 3]
cmp edi, 2
jg 0x433b1e
mov dword [esp + 0x28], edi
mov dword [esp + 0x30], esi
mov dword [esp + 0x54], edx
mov dword [esp + 0x40], ebx
test edi, edi
jle 0x432ec9
movzx edx, byte [eax]
mov byte [esi], dl
cmp edi, 2
jne 0x433b6c
movzx eax, byte [eax + 1]
mov byte [esi + 1], al
mov eax, dword [esp + 0x54]
mov dword [esp + 0x40], ebx
add eax, ecx
mov dword [esp + 0x30], eax
jmp 0x432ec9
cmp eax, 3
je 0x434499
cmp eax, 1
je 0x43437f
mov dword [esp + 0x28], 0
mov ebx, 5
mov edx, 5
jmp 0x4335e9
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x432de7
mov eax, dword [esp + 0x34]
mov dword [eax], 5
jmp 0x433657
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
jne 0x4341a9
mov eax, dword [esp + 0x28]
movsx ebx, byte [eax + 0x48c0a0]
mov edx, ebx
jmp 0x433560
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x4331eb
mov eax, dword [esp + 0x34]
mov dword [eax], 0x1b
jmp 0x433657
movzx edi, byte [esi]
mov eax, ecx
add esi, 1
mov dword [esp + 0x24], esi
shl eax, 8
mov dword [edx + 0xc], edi
jmp 0x432c10
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x43347d
mov eax, dword [esp + 0x34]
mov dword [eax], 0x1a
jmp 0x433657
mov edx, dword [esp + 0x24]
sub edx, ebp
jmp 0x4337cd
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x432e2f
mov eax, dword [esp + 0x34]
mov dword [eax], 0xe
jmp 0x433657
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x4332d1
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov esi, 1
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
mov eax, 0x12
jmp 0x4336b4
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x433021
mov eax, dword [esp + 0x34]
mov dword [eax], 0x19
jmp 0x433657
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
test byte [esp + 0x12c], 2
je 0x43333d
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov esi, 1
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
mov eax, 0x10
jmp 0x4336b4
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x34]
test byte [esp + 0x12c], 2
jne 0x4342fe
mov ecx, dword [esp + 0x28]
mov byte [eax + ecx + 0x2920], 0
jmp 0x432b0f
mov dword [esp + 0x24], ebp
test byte [esp + 0x12c], 2
je 0x43324b
mov dword [esp + 0x30], 0
mov edx, ebp
mov eax, dword [esp + 0x34]
sub edx, ebp
mov esi, 1
mov dword [eax], 0x20
jmp 0x432787
mov eax, dword [esp + 0x38]
lea edx, [eax - 0x10]
mov edi, dword [esp + 0x3c]
mov eax, 1
mov esi, dword [esp + 0x20]
movsx edx, byte [edx + 0x48c0a4]
sub dword [esp + 0x1c], edi
mov ecx, edi
shl eax, cl
sub eax, 1
and eax, esi
shr esi, cl
lea ebx, [edx + eax]
xor eax, eax
cmp dword [esp + 0x38], 0x10
mov dword [esp + 0x20], esi
jne 0x433e05
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x28]
movzx eax, byte [eax + esi + 0x2923]
mov esi, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 8], ebx
lea eax, [eax + esi + 0x2924]
add esi, ebx
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
mov edi, dword [eax + 0x2c]
mov edx, dword [eax + 0x30]
lea eax, [edi + edx]
cmp ecx, eax
jb 0x433f6c
cmp eax, ecx
je 0x434a37
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x4336aa
mov dword [esp + 0x24], ebp
test byte [esp + 0x12c], 2
je 0x4330fa
mov dword [esp + 0x30], 0
mov edx, ebp
jmp 0x43312e
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], 0
mov edx, dword [esp + 0x12c]
and edx, 2
je 0x433087
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov esi, 1
mov dword [eax], 0x2a
sub edx, ebp
jmp 0x432787
mov dword [esp + 0x24], ebp
mov esi, dword [esp + 0x124]
test byte [esp + 0x12c], 2
je 0x4333d9
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
sub esi, dword [esp + 0x124]
mov dword [esp + 0x30], esi
sub edx, ebp
mov esi, 1
mov dword [eax], 0x17
jmp 0x432787
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x124]
jmp 0x43318f
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x38], 0
jmp 0x432a30
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
jmp 0x433643
mov dword [esp + 0x24], ebp
xor edx, edx
jmp 0x432ccf
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 0x34]
jmp 0x432e77
cmp dword [esp + 0x1c], 0xe
ja 0x433fb2
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
sub eax, esi
sub eax, 1
jle 0x43334f
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
movzx eax, byte [esi + 1]
movzx edx, byte [esi]
lea ecx, [edi + 8]
add esi, 2
mov dword [esp + 0x24], esi
shl eax, cl
mov ecx, edi
add edi, 0x10
shl edx, cl
mov dword [esp + 0x1c], edi
or eax, edx
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
and eax, 0x3ff
movsx eax, word [esi + eax*2 + 0x1ca0]
mov ecx, eax
test eax, eax
js 0x4342a4
sar eax, 9
mov ebx, eax
mov eax, ecx
and eax, 0x1ff
mov ecx, ebx
sub dword [esp + 0x1c], ebx
mov dword [esp + 0x38], eax
shr dword [esp + 0x20], cl
cmp eax, 0xf
jle 0x434358
cmp dword [esp + 0x38], 0x10
jne 0x43433b
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x43433b
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], 0
sub eax, dword [esp + 0x124]
mov dword [esp + 0x38], 0x10
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x4336df
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
sub esi, dword [esp + 0x124]
mov dword [esp + 0x30], esi
sub edx, ebp
mov esi, 2
mov dword [eax], 0x18
jmp 0x432787
mov edi, dword [esp + 0x1c]
cmp edi, 0xa
jbe 0x4334c2
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
mov eax, esi
shr eax, 0xa
and eax, 1
sub eax, edx
movsx edx, word [ebx + eax*2 + 0x16fe]
test dx, dx
jns 0x4340e8
cmp edi, 0xb
je 0x4334c2
mov eax, esi
shr eax, 0xb
and eax, 1
sub eax, edx
movsx edx, word [ebx + eax*2 + 0x16fe]
test dx, dx
jns 0x4340e8
cmp edi, 0xc
je 0x4334c2
mov eax, esi
shr eax, 0xc
and eax, 1
sub eax, edx
movsx edx, word [ebx + eax*2 + 0x16fe]
test dx, dx
jns 0x4340e8
cmp edi, 0xe
jne 0x4334c2
mov eax, esi
shr eax, 0xd
and eax, 1
sub eax, edx
cmp word [ebx + eax*2 + 0x16fe], 0
js 0x4334c2
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
and eax, 0x3ff
movsx edx, word [esi + eax*2 + 0xf00]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
mov ebx, 0xa
mov ecx, ebx
mov eax, esi
add ebx, 1
shr eax, cl
and eax, 1
sub eax, edx
movsx edx, word [edi + eax*2 + 0x16fe]
test edx, edx
js 0x43410a
jmp 0x433a7b
mov dword [eax], 2
mov esi, 1
mov dword [esp + 0x30], 0
jmp 0x432787
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov esi, 2
mov dword [eax], 9
mov eax, dword [esp + 0x30]
sub edx, ebp
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
jmp 0x432787
lea ecx, [ebp + 1]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
movzx ecx, byte [ebp]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
jmp 0x432cb3
mov eax, dword [esp + 0x34]
mov dword [esp + 0x24], ebp
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
jmp 0x432c3c
mov eax, dword [esp + 0x34]
mov dword [eax], 0xb
jmp 0x433657
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], ebx
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x43379f
cmp dword [esp + 0x1c], 0xa
jbe 0x43341e
mov ebx, 0xa
jmp 0x4341f2
cmp dword [esp + 0x1c], ebx
je 0x43341e
mov edx, dword [esp + 0x20]
mov ecx, ebx
add ebx, 1
shr edx, cl
and edx, 1
sub edx, eax
mov eax, dword [esp + 0x34]
movsx eax, word [eax + edx*2 + 0x95e]
test eax, eax
js 0x4341e8
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x160]
mov ebx, dword [esp + 0x34]
mov edx, 0xa
mov edi, dword [esp + 0x20]
mov ecx, edx
add edx, 1
shr edi, cl
mov ecx, edi
and ecx, 1
sub ecx, eax
movsx eax, word [ebx + ecx*2 + 0x95e]
test eax, eax
js 0x434230
jmp 0x433989
cmp dword [esp + 0x1c], 0xa
jbe 0x433382
mov ebx, 0xa
jmp 0x43426f
cmp dword [esp + 0x1c], ebx
je 0x433382
mov edx, dword [esp + 0x20]
mov ecx, ebx
add ebx, 1
shr edx, cl
and edx, 1
sub edx, eax
mov eax, dword [esp + 0x34]
movsx eax, word [eax + edx*2 + 0x249e]
test eax, eax
js 0x434265
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0x1ca0]
mov esi, dword [esp + 0x34]
mov ebx, 0xa
mov edx, dword [esp + 0x20]
mov ecx, ebx
add ebx, 1
shr edx, cl
and edx, 1
sub edx, eax
movsx eax, word [esi + edx*2 + 0x249e]
test eax, eax
js 0x4342ad
jmp 0x433fdd
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433d66
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
movzx eax, byte [ecx]
mov byte [esi + edi + 0x2920], al
lea eax, [ecx + 1]
mov dword [esp + 0x24], eax
jmp 0x432b0f
mov dword [eax], 7
jmp 0x433657
mov dword [esp + 0x1c], ebx
mov ebp, 0xa
mov ecx, ebp
mov ebx, edx
add ebp, 1
shr ebx, cl
mov ecx, ebx
and ecx, 1
sub ecx, eax
mov eax, dword [esp + 0x34]
movsx eax, word [eax + ecx*2 + 0x95e]
test eax, eax
js 0x434312
mov ebx, dword [esp + 0x1c]
jmp 0x432f51
lea edx, [eax - 0x10]
movsx eax, byte [eax + 0x48c098]
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x1c], eax
jae 0x433dc2
jmp 0x4332e6
mov ecx, dword [esp + 0x28]
movzx eax, byte [esp + 0x38]
mov esi, dword [esp + 0x34]
mov byte [esi + ecx + 0x2924], al
lea eax, [ecx + 1]
mov dword [esp + 0x28], eax
jmp 0x433e2a
mov ecx, eax
jmp 0x433631
mov dword [edi + 0xde0], 0x5050505
mov esi, edi
lea eax, [edi + 0x40]
lea edi, [edi + 0x44]
mov dword [edi + 0xda0], 0x5050505
mov dword [edi + 0xda4], 0x5050505
mov dword [edi + 0xda8], 0x5050505
mov dword [edi + 0xdac], 0x5050505
mov dword [edi + 0xdb0], 0x5050505
mov dword [edi + 0xdb4], 0x5050505
mov dword [edi + 0xdb8], 0x5050505
mov dword [edi - 4], 0x8080808
mov dword [edi + 0x88], 0x8080808
mov dword [edi - 0x18], 0x120
mov dword [edi - 0x14], 0x20
and edi, 0xfffffffc
sub eax, edi
mov ecx, eax
mov eax, 0x8080808
add ecx, 0x90
shr ecx, 2
rep stosd dword es:[edi], eax
lea edi, [esi + 0xd4]
lea eax, [esi + 0xd0]
mov dword [esi + 0xd0], 0x9090909
mov dword [esi + 0x13c], 0x9090909
and edi, 0xfffffffc
sub eax, edi
mov ecx, eax
mov eax, 0x9090909
add ecx, 0x70
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [esi + 0x140], 0x7070707
mov dword [esi + 0x144], 0x7070707
mov dword [esi + 0x148], 0x7070707
mov dword [esi + 0x14c], 0x7070707
mov dword [esi + 0x150], 0x7070707
mov dword [esi + 0x154], 0x7070707
mov dword [esi + 0x158], 0x8080808
mov dword [esi + 0x15c], 0x8080808
mov esi, dword [esi + 0x18]
jmp 0x432ec1
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x4336f5
mov dword [esp + 0x40], ebx
mov dword [esp + 0x28], 0xffffffff
jmp 0x432ec9
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x24], ecx
jae 0x433e95
mov eax, dword [esp + 0x24]
movzx edx, byte [eax]
add eax, 1
mov dword [esp + 0x24], eax
jmp 0x433087
lea edi, [ecx + 0x1b84]
lea eax, [ecx + 0x1b80]
mov esi, ecx
mov dword [ecx + 0x1b80], 0
mov dword [ecx + 0x1c9c], 0
and edi, 0xfffffffc
sub eax, edi
mov ecx, eax
xor eax, eax
add ecx, 0x120
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [esp + 0x28], 0
mov ecx, dword [esi + 0x34]
jmp 0x432ea9
cmp dword [esp + 0x1c], 2
ja 0x432e77
jmp 0x432e41
mov ecx, eax
mov eax, dword [esp + 0x30]
jmp 0x43317d
mov ecx, eax
jmp 0x43310e
mov edx, dword [esp + 0x24]
sub edx, ebp
jmp 0x433779
xor edx, edx
lea ebx, [esp + 0x7c]
mov ecx, 0x10
mov edi, ebx
mov eax, edx
mov ebx, dword [esp + 0x34]
rep stosd dword es:[edi], eax
imul eax, esi, 0xda0
mov dword [esp + 0x54], eax
lea eax, [ebx + eax + 0x160]
lea edi, [eax + 4]
mov ecx, eax
mov dword [eax], 0
mov dword [eax + 0x7fc], 0
and edi, 0xfffffffc
mov eax, edx
sub ecx, edi
add ecx, 0x800
shr ecx, 2
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x54]
lea eax, [ebx + eax + 0x960]
lea edi, [eax + 4]
mov ecx, eax
mov dword [eax], 0
mov dword [eax + 0x47c], 0
and edi, 0xfffffffc
mov eax, edx
sub ecx, edi
add ecx, 0x480
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x5c], ecx
mov ecx, dword [ebx + ecx*4 + 0x2c]
mov dword [esp + 0x58], ecx
test ecx, ecx
je 0x434606
mov eax, dword [esp + 0x54]
lea ecx, [ebx + eax]
xor eax, eax
movzx edx, byte [ecx + eax + 0x40]
add eax, 1
add dword [esp + edx*4 + 0x7c], 1
cmp dword [esp + 0x58], eax
jne 0x4345f3
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov dword [esp + 0xc0], 0
mov dword [esp + 0xbc], 0
lea eax, [ecx + ecx]
add ecx, edx
mov dword [esp + 0xc4], eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x88]
mov dword [esp + 0xc8], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xcc], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x90]
mov dword [esp + 0xd0], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x94]
mov dword [esp + 0xd4], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x98]
mov dword [esp + 0xd8], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xdc], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xe0], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xe4], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xe8], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0xac]
mov dword [esp + 0xec], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xf0], edx
add ecx, eax
add eax, edx
lea edx, [eax + eax]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xf4], edx
add ecx, eax
add eax, edx
mov edx, dword [esp + 0xb8]
add eax, eax
mov dword [esp + 0xf8], eax
add eax, edx
add edx, ecx
add eax, eax
mov dword [esp + 0xfc], eax
cmp edx, 1
jbe 0x4347d2
cmp eax, 0x10000
je 0x4347d2
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x124]
mov dword [esp + 0x30], eax
sub edx, ebp
jmp 0x4336c9
mov esi, dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x432af3
mov dword [esp + 0x28], 0
xor edx, edx
jmp 0x432c55
mov esi, dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
movzx eax, byte [esi]
shl eax, cl
or dword [esp + 0x20], eax
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x4330c8
mov dword [esp + 0x30], esi
jmp 0x433a0c
mov dword [esp + 0x30], esi
jmp 0x4338c8
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x34]
xor ebx, ebx
mov edi, 0xffffffff
add eax, ecx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x434912
imul eax, esi, 0x6d0
mov dword [esp + 0x6c], ebp
mov esi, ecx
mov ebp, ebx
mov dword [esp + 0x60], eax
jmp 0x434816
mov eax, dword [esp + 0x58]
add ebp, 1
cmp ebp, eax
je 0x43490e
mov eax, dword [esp + 0x64]
movzx edx, byte [eax + ebp + 0x40]
mov byte [esp + 0x6b], dl
mov dword [esp + 0x54], edx
test edx, edx
je 0x434807
mov ecx, dword [esp + edx*4 + 0xbc]
mov ebx, edx
lea eax, [ecx + 1]
mov dword [esp + edx*4 + 0xbc], eax
xor eax, eax
mov edx, ecx
add eax, eax
shr ecx, 1
and edx, 1
or eax, edx
sub ebx, 1
jne 0x434840
cmp dword [esp + 0x54], 0xa
jbe 0x4348d4
mov ebx, dword [esp + 0x60]
mov ecx, eax
and ecx, 0x3ff
lea ebx, [ecx + ebx + 0xb0]
movsx ecx, word [esi + ebx*2]
test ecx, ecx
jne 0x43487b
mov word [esi + ebx*2], di
mov ecx, edi
sub edi, 2
shr eax, 9
cmp dword [esp + 0x54], 0xb
je 0x4348b9
shr eax, 1
mov edx, eax
and edx, 1
sub edx, ecx
mov ecx, dword [esp + 0x60]
lea edx, [edx + ecx + 0x4af]
movsx ecx, word [esi + edx*2]
test cx, cx
jne 0x4348ab
mov word [esi + edx*2], di
mov ecx, edi
sub edi, 2
sub dword [esp + 0x54], 1
mov edx, dword [esp + 0x54]
cmp edx, 0xb
jne 0x434885
shr eax, 1
and eax, 1
sub eax, ecx
mov ecx, dword [esp + 0x60]
lea eax, [eax + ecx + 0x4af]
mov word [esi + eax*2], bp
jmp 0x434807
movzx ecx, byte [esp + 0x6b]
mov edx, ecx
shl edx, 9
or edx, ebp
cmp eax, 0x3ff
ja 0x434807
mov ebx, 1
shl ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x64]
mov word [ebx + eax*2 + 0x160], dx
add eax, ecx
cmp eax, 0x3ff
jbe 0x4348f4
jmp 0x434807
mov ebp, dword [esp + 0x6c]
cmp dword [esp + 0x5c], 2
je 0x43492c
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
sub esi, 1
mov dword [eax + 0x18], esi
jmp 0x432ec1
xor edx, edx
mov dword [esp + 0x28], edx
jmp 0x433e2a
mov dword [esp + 0x1c], ebx
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edi
cmp ebx, 0xe
ja 0x43395a
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
movzx eax, byte [esi + 1]
movzx edx, byte [esi]
lea ecx, [edi + 8]
add esi, 2
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x30]
shl eax, cl
mov ecx, edi
add edi, 0x10
shl edx, cl
mov dword [esp + 0x1c], edi
or eax, edx
or dword [esp + 0x20], eax
jmp 0x43395e
mov dword [esp + 0x1c], ebx
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edi
cmp dword [esp + 0x1c], 0xe
ja 0x43395a
sub eax, 1
jg 0x434950
mov esi, dword [esp + 0x30]
jmp 0x4333eb
mov edx, dword [esp + 0x24]
jmp 0x433da5
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
movzx eax, byte [edi]
mov ecx, esi
add edi, 1
mov dword [esp + 0x24], edi
shl eax, cl
or dword [esp + 0x20], eax
mov eax, esi
mov ecx, esi
add eax, 8
mov dword [esp + 0x1c], eax
jmp 0x43328e
mov esi, dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
movzx edx, byte [esi]
shl edx, cl
lea ecx, [esi + 1]
or dword [esp + 0x20], edx
mov dword [esp + 0x24], ecx
jmp 0x432bab
mov esi, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x24], edi
add esi, 1
mov dword [esp + 0x28], eax
jmp 0x4339a2
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edi
jmp 0x4339a2
mov esi, dword [esp + 0x34]
mov dword [esp + 8], edi
mov dword [esp + 0x54], edx
lea ebx, [esi + 0x2924]
lea eax, [esi + 0x40]
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x54]
lea eax, [esi + 0xde0]
lea ecx, [ebx + edi]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 0x18]
mov dword [esp + 0x5c], eax
jmp 0x434919