Function at 0x463b60
Capabilities:
Compute adler32 checksum

Disassembly:
sub esp, 0xdc
mov eax, dword [0x529034]
xor eax, esp
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xe0]
push ebx
push ebp
mov ebp, dword [esp + 0xf8]
mov ebx, edx
push esi
mov esi, dword [esp + 0xf4]
push edi
mov edi, ecx
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0xfc]
mov eax, dword [eax]
mov dword [esp + 0x5c], ecx
add eax, edx
mov dword [esp + 0x1c], eax
mov ecx, dword [ecx]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0xf4]
mov dword [esp + 0x14], edi
mov dword [esp + 0x44], esi
lea eax, [esi + ecx]
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x40], eax
and ebp, 4
je 0x463bde
or ecx, 0xffffffff
jmp 0x463be5
mov eax, esi
dec ecx
sub eax, edx
add ecx, eax
lea eax, [ecx + 1]
mov dword [esp + 0x58], ecx
test ecx, eax
jne 0x465346
cmp esi, edx
jb 0x465346
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x38]
mov ecx, dword [edi + 0x24]
mov esi, dword [edi + 4]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x3c]
mov dword [esp + 0x50], eax
mov eax, dword [edi]
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], ecx
cmp eax, 0x35
ja case.0x463c34.4
movzx eax, byte [eax + 0x465400]
jmp dword [eax*4 + 0x465378]
mov eax, dword [esp + 0x100]
xor edx, edx
xor esi, esi
mov dword [edi + 0xc], 0
mov dword [edi + 8], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x24], edx
mov dword [edi + 0x1c], 1
mov dword [edi + 0x10], 1
test al, 1
je 0x464507
mov ecx, dword [esp + 0x1c]
cmp ebx, ecx
jae 0x463cb9
movzx eax, byte [ebx]
inc ebx
mov dword [edi + 8], eax
mov dword [esp + 0x18], ebx
jmp 0x463cd7
mov ecx, dword [esp + 0x1c]
mov eax, ebx
cmp eax, ecx
jae 0x463cb2
movzx eax, byte [eax]
inc ebx
mov dword [edi + 8], eax
mov dword [esp + 0x18], ebx
jmp 0x463cd7
mov eax, dword [esp + 0x100]
test al, 2
je 0x463cd0
mov ebp, edi
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], eax
jmp 0x465198
mov dword [edi + 8], 0
cmp ebx, ecx
jae 0x463cff
movzx eax, byte [ebx]
inc ebx
mov dword [edi + 0xc], eax
mov dword [esp + 0x18], ebx
jmp 0x463d27
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x463cff
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
mov dword [edi + 0xc], eax
mov dword [esp + 0x18], ebx
jmp 0x463d27
test byte [esp + 0x100], 2
je 0x463d20
mov ebp, edi
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 2
jmp 0x465198
mov dword [edi + 0xc], 0
mov ecx, dword [esp + 0x14]
xor edx, edx
mov edi, dword [edi + 8]
mov eax, edi
shl eax, 8
mov dword [esp + 0x34], 0x1f
mov ecx, dword [ecx + 0xc]
add eax, ecx
div dword [esp + 0x34]
test edx, edx
jne 0x463d5b
test cl, 0x20
jne 0x463d5b
mov eax, edi
and al, 0xf
cmp al, 8
jne 0x463d5b
xor ecx, ecx
jmp 0x463d60
mov ecx, 1
mov dword [esp + 0x10], ecx
test ebp, ebp
jne 0x463d98
shr edi, 4
mov eax, 1
lea ecx, [edi + 8]
shl eax, cl
cmp eax, 0x8000
ja 0x463d89
mov ecx, dword [esp + 0x58]
inc ecx
cmp ecx, eax
jb 0x463d89
xor eax, eax
jmp 0x463d8e
mov eax, 1
mov ecx, dword [esp + 0x10]
or ecx, eax
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x24]
test ecx, ecx
jne case.0x463c34.36
mov ebp, dword [esp + 0x14]
jmp 0x464509
mov ebp, dword [esp + 0x14]
or eax, 0xffffffff
mov dword [esp + 0x20], eax
mov dword [ebp], 0x24
jmp 0x465198
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x464514
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x46452a
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x464570
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x464586
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x4645cb
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x4645e1
mov edi, ebx
cmp edi, dword [esp + 0x1c]
jae 0x464615
mov ebp, dword [esp + 0x14]
lea ebx, [edi + 1]
mov al, byte [edi]
mov dword [esp + 0x18], ebx
mov byte [ecx + ebp + 0x2920], al
inc ecx
jmp 0x4645af
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x4646a2
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x4646b8
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x46486f
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x464885
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x46492c
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x464942
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x464c7b
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x464c5f
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x464d4b
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x464d61
mov edi, dword [esp + 0x1c]
mov ecx, ebx
cmp ecx, edi
jae 0x4640e3
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x4640cb
mov edi, dword [esp + 0x1c]
mov ecx, ebx
cmp ecx, edi
jae 0x4641c6
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x4641dc
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x46428d
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x464279
mov ecx, ebx
cmp ecx, dword [esp + 0x1c]
jae 0x464334
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x46434a
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0x28]
jmp 0x4643d2
mov ebp, edi
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x40]
jae 0x464fb3
mov byte [eax], cl
inc eax
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x1c]
mov ecx, edi
sub ecx, ebx
cmp ecx, 4
jl 0x46405f
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
cmp eax, 2
jl 0x46405f
cmp esi, 0xf
jae 0x463f60
movzx eax, word [ebx]
mov ecx, esi
shl eax, cl
add ebx, 2
or edx, eax
mov dword [esp + 0x18], ebx
add esi, 0x10
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebp + eax*2 + 0x160]
mov dword [esp + 0x10], eax
test eax, eax
js 0x463f7e
mov ecx, eax
sar ecx, 9
jmp 0x463fa7
mov ebx, dword [esp + 0x10]
mov ecx, 0xa
mov eax, edx
not ebx
shr eax, cl
inc ecx
and eax, 1
add eax, ebx
movsx ebx, word [ebp + eax*2 + 0x960]
test ebx, ebx
js 0x463f87
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x18]
shr edx, cl
sub esi, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
test ecx, 0x100
jne 0x464189
cmp esi, 0xf
jae 0x463fd7
movzx eax, word [ebx]
mov ecx, esi
shl eax, cl
add ebx, 2
or edx, eax
mov dword [esp + 0x18], ebx
add esi, 0x10
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebp + eax*2 + 0x160]
mov dword [esp + 0x38], eax
test eax, eax
js 0x463ff5
mov ecx, eax
sar ecx, 9
jmp 0x464024
mov ebx, dword [esp + 0x38]
mov ecx, 0xa
nop
mov eax, edx
not ebx
shr eax, cl
inc ecx
and eax, 1
add eax, ebx
movsx ebx, word [ebp + eax*2 + 0x960]
test ebx, ebx
js 0x464000
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x28]
sub esi, ecx
shr edx, cl
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
mov byte [edi], cl
mov edi, dword [esp + 0x1c]
test eax, 0x100
jne 0x464054
mov ecx, dword [esp + 0x28]
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 0x28], ecx
jmp 0x463f26
inc dword [esp + 0x28]
mov ecx, eax
jmp 0x464189
cmp esi, 0xf
jae 0x464121
cmp ecx, 2
jge 0x4640f9
mov eax, edx
and eax, 0x3ff
movsx edi, word [ebp + eax*2 + 0x160]
test edi, edi
js 0x464095
sar edi, 9
test edi, edi
je 0x4640bf
cmp esi, edi
jae 0x46411d
jmp 0x4640bf
cmp esi, 0xa
jbe 0x4640bf
mov ecx, 0xa
nop
mov eax, edx
not edi
shr eax, cl
inc ecx
and eax, 1
add eax, edi
movsx edi, word [ebp + eax*2 + 0x960]
test edi, edi
jns 0x46411d
lea eax, [ecx + 1]
cmp esi, eax
jae 0x4640a0
mov edi, dword [esp + 0x1c]
cmp ebx, edi
jae 0x4640e7
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x14]
mov ecx, esi
shl eax, cl
add esi, 8
or edx, eax
cmp esi, 0xf
jb 0x464071
jmp 0x464121
mov ebp, dword [esp + 0x14]
test byte [esp + 0x100], 2
jne 0x464e21
xor eax, eax
jmp 0x4640cf
movzx edx, byte [ebx + 1]
lea ecx, [esi + 8]
movzx eax, byte [ebx]
add ebx, 2
shl edx, cl
mov ecx, esi
shl eax, cl
or edx, eax
mov dword [esp + 0x18], ebx
or dword [esp + 0x24], edx
add esi, 0x10
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebp + eax*2 + 0x160]
mov dword [esp + 0x10], eax
test eax, eax
js 0x464148
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
mov dword [esp + 0x10], eax
jmp 0x464171
mov ebx, dword [esp + 0x10]
mov ecx, 0xa
mov eax, edx
not ebx
shr eax, cl
inc ecx
and eax, 1
add eax, ebx
movsx ebx, word [ebp + eax*2 + 0x960]
test ebx, ebx
js 0x464151
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x18]
shr edx, cl
sub esi, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
cmp ecx, 0x100
jb 0x463f0d
and ecx, 0x1ff
mov dword [esp + 0x10], ecx
cmp ecx, 0x100
je 0x4644dd
lea eax, [ecx*4 - 0x404]
mov ecx, dword [eax + 0x520cc0]
mov eax, dword [eax + 0x520ac0]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x464207
cmp esi, ecx
jae 0x4641f1
cmp ebx, edi
jb 0x4641d8
test byte [esp + 0x100], 2
jne 0x464e36
xor eax, eax
jmp 0x4641e0
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
mov ecx, dword [esp + 0x3c]
or edx, eax
cmp esi, ecx
jb 0x4641c2
mov eax, 1
sub esi, ecx
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add dword [esp + 0x10], eax
mov dword [esp + 0x24], edx
cmp esi, 0xf
jae 0x4642c5
mov eax, edi
sub eax, ebx
cmp eax, 2
jge 0x4642a1
mov ebp, dword [esp + 0x14]
mov eax, edx
and eax, 0x3ff
movsx edi, word [ebp + eax*2 + 0xf00]
test edi, edi
js 0x464245
sar edi, 9
test edi, edi
je 0x46426f
cmp esi, edi
jae 0x4642c9
jmp 0x46426f
cmp esi, 0xa
jbe 0x46426f
mov ecx, 0xa
nop
mov eax, edx
not edi
shr eax, cl
inc ecx
and eax, 1
add eax, edi
movsx edi, word [ebp + eax*2 + 0x1700]
test edi, edi
jns 0x4642c9
lea eax, [ecx + 1]
cmp esi, eax
jae 0x464250
cmp ebx, dword [esp + 0x1c]
jae 0x46428f
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
cmp esi, 0xf
jb 0x46421d
jmp 0x4642c5
mov ebp, edi
test byte [esp + 0x100], 2
jne 0x464e4f
xor eax, eax
jmp 0x46427d
movzx edx, byte [ebx + 1]
lea ecx, [esi + 8]
movzx eax, byte [ebx]
add ebx, 2
shl edx, cl
mov ecx, esi
shl eax, cl
or edx, eax
mov dword [esp + 0x18], ebx
or dword [esp + 0x24], edx
add esi, 0x10
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x14]
mov eax, edx
and eax, 0x3ff
movsx edi, word [ebp + eax*2 + 0xf00]
test edi, edi
js 0x4642e9
mov ecx, edi
sar ecx, 9
and edi, 0x1ff
jmp 0x464308
mov ecx, 0xa
nop
mov eax, edx
not edi
shr eax, cl
inc ecx
and eax, 1
add eax, edi
movsx edi, word [ebp + eax*2 + 0x1700]
test edi, edi
js 0x4642f0
shr edx, cl
sub esi, ecx
mov ecx, dword [edi*4 + 0x520bc0]
mov edi, dword [edi*4 + 0x520b40]
mov dword [esp + 0x24], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x30], edi
test ecx, ecx
je 0x46437f
cmp esi, ecx
jae 0x464367
cmp ebx, dword [esp + 0x1c]
jb 0x464346
test byte [esp + 0x100], 2
jne 0x464e64
xor eax, eax
jmp 0x46434e
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
mov ecx, dword [esp + 0x3c]
or edx, eax
cmp esi, ecx
jb 0x46432e
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x30]
mov eax, 1
sub esi, ecx
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add edi, eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x30], edi
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0xf4]
sub ecx, eax
mov dword [esp + 0x50], ecx
cmp edi, ecx
jbe 0x4643a2
test byte [esp + 0x100], 4
jne 0x465050
sub ecx, edi
and ecx, dword [esp + 0x58]
add ecx, eax
cmp dword [esp + 0x28], ecx
mov eax, ecx
cmova eax, dword [esp + 0x28]
add eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x40]
jbe 0x46440b
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
mov eax, ecx
dec ecx
mov dword [esp + 0x10], ecx
test eax, eax
je 0x464402
cmp ebp, dword [esp + 0x40]
jae 0x464e7d
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0xf4]
sub eax, edi
and eax, dword [esp + 0x58]
mov al, byte [eax + ebx]
mov ebx, dword [esp + 0x18]
mov byte [ebp], al
inc ebp
inc dword [esp + 0x50]
mov dword [esp + 0x28], ebp
jmp 0x4643c7
mov ebp, dword [esp + 0x14]
jmp 0x463f22
mov eax, dword [esp + 0x10]
cmp eax, 9
jb 0x46447e
cmp eax, edi
ja 0x46447e
mov ebp, dword [esp + 0x28]
mov edi, eax
and edi, 0xfffffff8
add edi, ecx
mov eax, dword [ecx]
mov dword [ebp], eax
mov eax, dword [ecx + 4]
add ecx, 8
mov dword [ebp + 4], eax
add ebp, 8
cmp ecx, edi
jb 0x464423
mov eax, dword [esp + 0x10]
and eax, 7
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x10], eax
cmp eax, 3
jae 0x46447e
test eax, eax
je 0x463f22
mov edi, dword [esp + 0x28]
mov al, byte [ecx]
mov byte [edi], al
mov eax, dword [esp + 0x10]
cmp eax, 1
jbe 0x464473
mov al, byte [ecx + 1]
mov byte [edi + 1], al
mov eax, dword [esp + 0x10]
add edi, eax
mov dword [esp + 0x28], edi
jmp 0x463f22
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
movzx eax, byte [ecx]
lea ecx, [ecx + 3]
mov byte [edi], al
sub ebx, 3
movzx eax, byte [ecx - 2]
mov byte [edi + 1], al
movzx eax, byte [ecx - 1]
mov byte [edi + 2], al
add edi, 3
cmp ebx, 2
jg 0x464486
mov dword [esp + 0x10], ebx
test ebx, ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x28], edi
jle 0x463f22
mov al, byte [ecx]
mov byte [edi], al
mov eax, dword [esp + 0x10]
cmp eax, 1
jle 0x464473
mov al, byte [ecx + 1]
mov byte [edi + 1], al
mov eax, dword [esp + 0x10]
add edi, eax
mov dword [esp + 0x28], edi
jmp 0x463f22
test byte [ebp + 0x14], 1
je 0x464509
test byte [esp + 0x100], 1
je 0x465184
mov edi, dword [esp + 0x1c]
mov eax, esi
and eax, 7
cmp esi, eax
jae 0x4650a1
jmp 0x465093
mov ebp, edi
cmp esi, 3
jae 0x464540
cmp ebx, dword [esp + 0x1c]
jb 0x464526
test byte [esp + 0x100], 2
jne 0x464e96
xor eax, eax
jmp 0x46452e
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
cmp esi, 3
jb 0x46450e
mov ebp, dword [esp + 0x14]
mov eax, edx
sub esi, 3
and eax, 7
shr edx, 3
mov dword [ebp + 0x14], eax
shr eax, 1
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], esi
mov dword [ebp + 0x18], eax
jne 0x46478c
mov eax, esi
and eax, 7
cmp esi, eax
jae 0x4645a0
cmp ebx, dword [esp + 0x1c]
jb 0x464582
test byte [esp + 0x100], 2
jne 0x464eaf
xor eax, eax
jmp 0x46458a
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
mov eax, esi
and eax, 7
cmp esi, eax
jb 0x46456a
mov ebp, dword [esp + 0x14]
mov ecx, esi
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [esp + 0x24], edx
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp ecx, 4
jae 0x464649
test esi, esi
je 0x46460f
cmp esi, 8
jae 0x4645fb
cmp ebx, dword [esp + 0x1c]
jb 0x4645dd
test byte [esp + 0x100], 2
jne 0x464ec8
xor eax, eax
jmp 0x4645e5
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
cmp esi, 8
jb 0x4645c5
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov byte [ecx + ebp + 0x2920], dl
sub esi, 8
shr edx, 8
inc ecx
mov dword [esp + 0x24], edx
jmp 0x4645af
cmp ebx, dword [esp + 0x1c]
jb 0x464635
test byte [esp + 0x100], 2
mov ebp, dword [esp + 0x14]
jne 0x464ee1
mov byte [ecx + ebp + 0x2920], 0
inc ecx
jmp 0x4645af
mov al, byte [ebx]
inc ebx
mov byte [ecx + ebp + 0x2920], al
inc ecx
mov dword [esp + 0x18], ebx
jmp 0x4645af
movzx ecx, byte [ebp + 0x2921]
movzx eax, byte [ebp + 0x2920]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp + 0x2922]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebp + 0x2923]
shl ecx, 8
or ecx, eax
xor ecx, 0xffff
cmp dword [esp + 0x10], ecx
jne 0x464fca
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
test ecx, ecx
je 0x4644dd
test esi, esi
je 0x464702
cmp esi, 8
jae 0x4646ce
cmp ebx, dword [esp + 0x1c]
jb 0x4646b4
test byte [esp + 0x100], 2
jne 0x464ef6
xor eax, eax
jmp 0x4646bc
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
cmp esi, 8
jb 0x46469c
mov ecx, dword [esp + 0x10]
movzx eax, dl
shr edx, 8
sub esi, 8
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], edx
jmp 0x4646e5
mov eax, dword [esp + 0x30]
mov ebp, dword [esp + 0x28]
cmp ebp, dword [esp + 0x40]
jae 0x464f0f
mov byte [ebp], al
inc ebp
dec ecx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x10], ecx
jmp 0x464687
mov ebp, dword [esp + 0x28]
test ecx, ecx
jne 0x46471b
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x14]
jmp 0x4644dd
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
cmp ebp, ecx
jb 0x464748
mov ebp, dword [esp + 0x14]
mov eax, 2
mov edx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
mov dword [ebp], 9
jmp 0x465198
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x1c]
cmp ebx, eax
jae 0x464f28
mov edi, dword [esp + 0x10]
sub ecx, ebp
sub eax, ebx
cmp ecx, eax
cmovae ecx, eax
cmp ecx, edi
cmovb edi, ecx
push edi
push ebx
push ebp
call fcn.004b4730
mov ecx, dword [esp + 0x1c]
add ebx, edi
add ebp, edi
mov dword [esp + 0x24], ebx
add esp, 0xc
mov dword [esp + 0x28], ebp
sub ecx, edi
mov dword [esp + 0x10], ecx
jmp 0x464706
cmp eax, 3
je 0x464ff6
cmp eax, 1
jne 0x46484f
movaps xmm0, xmmword [0x5211c0]
lea eax, [ebp + 0xd0]
mov dword [ebp + 0x2c], 0x120
mov dword [ebp + 0x30], 0x20
movups xmmword [ebp + 0xde0], xmm0
movups xmmword [ebp + 0xdf0], xmm0
movaps xmm0, xmmword [0x5211e0]
movups xmmword [ebp + 0x40], xmm0
movups xmmword [ebp + 0x50], xmm0
movups xmmword [ebp + 0x60], xmm0
movups xmmword [ebp + 0x70], xmm0
movups xmmword [ebp + 0x80], xmm0
movups xmmword [ebp + 0x90], xmm0
movups xmmword [ebp + 0xa0], xmm0
movups xmmword [ebp + 0xb0], xmm0
movups xmmword [ebp + 0xc0], xmm0
movaps xmm0, xmmword [0x5211f0]
movups xmmword [eax], xmm0
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax + 0x20], xmm0
movups xmmword [eax + 0x30], xmm0
movups xmmword [eax + 0x40], xmm0
movups xmmword [eax + 0x50], xmm0
movups xmmword [eax + 0x60], xmm0
movaps xmm0, xmmword [str._a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_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]
movups xmmword [eax + 0x70], xmm0
movq qword [eax + 0x80], xmm0
mov dword [eax + 0x88], 0x8080808
mov dword [eax + 0x8c], 0x8080808
jmp 0x46498b
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp ecx, 3
jae 0x4648fc
movsx eax, byte [ecx + 0x533850]
cmp esi, eax
jae 0x4648a9
cmp ebx, dword [esp + 0x1c]
jb 0x464881
test byte [esp + 0x100], 2
jne 0x464f53
xor eax, eax
jmp 0x464889
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
mov ecx, dword [esp + 0x10]
or edx, eax
mov dword [esp + 0x24], edx
movsx eax, byte [ecx + 0x533854]
cmp esi, eax
jb 0x464869
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
lea edx, [ecx*4]
movzx ecx, byte [ecx + 0x533858]
mov eax, 1
shl eax, cl
dec eax
and eax, edi
mov dword [edx + ebp + 0x2c], eax
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x53385c]
shr edi, cl
mov ecx, eax
mov dword [esp + 0x24], edi
movsx eax, byte [ecx + 0x533860]
sub esi, eax
mov eax, dword [ecx*4 + 0x520674]
add dword [edx + ebp + 0x2c], eax
inc ecx
mov dword [esp + 0x38], esi
mov edx, edi
jmp 0x464851
push 0x120
lea eax, [ebp + 0x1b80]
push 0
push eax
call fcn.004b4360
mov edx, dword [esp + 0x30]
add esp, 0xc
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp ecx, dword [ebp + 0x34]
jae 0x464984
cmp esi, 3
jae 0x464958
cmp ebx, dword [esp + 0x1c]
jb 0x46493e
test byte [esp + 0x100], 2
jne 0x464f6c
xor eax, eax
jmp 0x464946
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
cmp esi, 3
jb 0x464926
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, edx
and ecx, 7
shr edx, 3
sub esi, 3
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], esi
movzx eax, byte [eax + 0x520308]
mov byte [eax + ebp + 0x1b80], cl
mov ecx, dword [esp + 0x10]
inc ecx
jmp 0x464918
mov dword [ebp + 0x34], 0x13
mov eax, dword [ebp + 0x18]
test eax, eax
js 0x463f22
imul edi, eax, 0xda0
lea eax, [esp + 0xa8]
push 0x40
push 0
push eax
add edi, 0x40
add edi, ebp
mov dword [esp + 0x2c], edi
call fcn.004b4360
push 0xc80
lea eax, [edi + 0x120]
push 0
push eax
call fcn.004b4360
mov eax, dword [ebp + 0x18]
add esp, 0x18
xor ecx, ecx
mov edx, dword [ebp + eax*4 + 0x2c]
mov dword [esp + 0x34], edx
test edx, edx
je 0x4649f0
nop dword [eax]
movzx eax, byte [ecx + edi]
inc ecx
inc dword [esp + eax*4 + 0xa8]
cmp ecx, edx
jb 0x4649e0
xor ecx, ecx
xor edi, edi
mov dword [esp + 0x68], ecx
xor ebp, ebp
mov dword [esp + 0x64], ecx
mov edx, 4
mov dword [esp + 0x48], ecx
nop word [eax + eax]
mov eax, dword [esp + edx + 0xa8]
add ecx, eax
add ecx, ecx
add edi, eax
mov eax, dword [esp + edx + 0xac]
add dword [esp + 0x48], eax
mov dword [esp + edx + 0x68], ecx
add ecx, eax
mov eax, dword [esp + edx + 0xb0]
add ecx, ecx
mov dword [esp + edx + 0x6c], ecx
add ebp, eax
add ecx, eax
add ecx, ecx
mov dword [esp + edx + 0x70], ecx
add edx, 0xc
cmp edx, 0x3c
jbe 0x464a10
mov eax, dword [esp + 0x48]
add eax, ebp
add edi, eax
cmp ecx, 0x10000
je 0x464a66
cmp edi, 1
ja 0x465009
or ebp, 0xffffffff
mov dword [esp + 0x4c], 0
cmp dword [esp + 0x34], 0
mov dword [esp + 0x48], ebp
jbe 0x464b34
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x14]
nop dword [eax]
movzx ecx, byte [ebx + edi]
xor edx, edx
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x464b1a
mov edi, dword [esp + ecx*4 + 0x64]
mov ebp, ecx
mov dword [esp + 0x54], ecx
lea eax, [edi + 1]
mov dword [esp + ecx*4 + 0x64], eax
nop
mov ecx, edi
add edx, edx
and ecx, 1
shr edi, 1
or edx, ecx
sub ebp, 1
jne 0x464ab0
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x48]
cmp ecx, 0xa
ja 0x464ba1
mov eax, ecx
shl eax, 9
or eax, ebx
movzx eax, ax
mov dword [esp + 0x54], eax
cmp edx, 0x400
jae 0x464b16
mov edi, 1
shl edi, cl
mov ecx, dword [esp + 0x54]
lea eax, [edi + edi]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x20]
lea eax, [eax + edx*2]
add eax, 0x120
mov word [eax], cx
add edx, edi
add eax, dword [esp + 0x34]
cmp edx, 0x400
jb 0x464b05
mov edi, dword [esp + 0x20]
mov eax, dword [esi + 0x18]
inc ebx
mov dword [esp + 0x4c], ebx
cmp ebx, dword [esi + eax*4 + 0x2c]
jb 0x464a90
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
cmp dword [ebp + 0x18], 2
jne 0x464e15
xor ecx, ecx
mov edx, dword [esp + 0x24]
mov eax, dword [ebp + 0x30]
add eax, dword [ebp + 0x2c]
mov dword [esp + 0x10], ecx
cmp ecx, eax
jae 0x464dd5
cmp esi, 0xf
jae 0x464cb3
mov eax, dword [esp + 0x1c]
sub eax, ebx
cmp eax, 2
jge 0x464c8f
mov eax, edx
and eax, 0x3ff
movsx edi, word [ebp + eax*2 + 0x1ca0]
test edi, edi
js 0x464c2c
sar edi, 9
test edi, edi
je 0x464c55
cmp esi, edi
jae 0x464cb3
jmp 0x464c55
mov edi, dword [esp + 0x20]
mov eax, edx
and eax, 0x3ff
movsx ecx, word [edi + eax*2 + 0x120]
test ecx, ecx
jne 0x464bc9
mov word [edi + eax*2 + 0x120], bp
mov ecx, ebp
sub ebp, 2
mov dword [esp + 0x48], ebp
mov eax, dword [esp + 0x34]
shr edx, 9
cmp eax, 0xb
jbe 0x464c18
mov ebx, dword [esp + 0x20]
lea edi, [eax - 0xb]
nop dword [eax]
shr edx, 1
mov eax, edx
and eax, 1
sub ecx, eax
mov eax, 0x48f
sub eax, ecx
movzx ecx, word [ebx + eax*2]
test cx, cx
jne 0x464c04
mov word [ebx + eax*2], bp
mov ecx, ebp
sub ebp, 2
jmp 0x464c07
movsx ecx, cx
sub edi, 1
jne 0x464be0
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x48], ebp
shr edx, 1
and edx, 1
sub edx, ecx
mov word [edi + edx*2 + 0x91e], bx
jmp 0x464b1a
cmp esi, 0xa
jbe 0x464c55
mov ecx, 0xa
mov eax, edx
not edi
shr eax, cl
inc ecx
and eax, 1
add eax, edi
movsx edi, word [ebp + eax*2 + 0x24a0]
test edi, edi
jns 0x464cb3
lea eax, [ecx + 1]
cmp esi, eax
jae 0x464c36
cmp ebx, dword [esp + 0x1c]
jae 0x464c7d
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x14]
mov ecx, esi
shl eax, cl
add esi, 8
or edx, eax
cmp esi, 0xf
jb 0x464b72
jmp 0x464cb3
mov ebp, edi
test byte [esp + 0x100], 2
jne 0x464f85
xor eax, eax
jmp 0x464c63
movzx edx, byte [ebx + 1]
lea ecx, [esi + 8]
movzx eax, byte [ebx]
add ebx, 2
shl edx, cl
mov ecx, esi
shl eax, cl
or edx, eax
mov dword [esp + 0x18], ebx
or dword [esp + 0x24], edx
add esi, 0x10
mov edx, dword [esp + 0x24]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebp + eax*2 + 0x1ca0]
mov dword [esp + 0x30], eax
test eax, eax
js 0x464cda
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
mov dword [esp + 0x30], eax
jmp 0x464d07
mov ebx, dword [esp + 0x30]
mov ecx, 0xa
mov eax, edx
not ebx
shr eax, cl
inc ecx
and eax, 1
add eax, ebx
movsx ebx, word [ebp + eax*2 + 0x24a0]
test ebx, ebx
js 0x464ce3
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
shr edx, cl
sub esi, ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], esi
cmp eax, 0x10
jae 0x464d29
mov ecx, dword [esp + 0x10]
mov byte [ecx + ebp + 0x2924], al
inc ecx
jmp 0x464b48
jne 0x464d36
cmp dword [esp + 0x10], 0
je 0x465026
movsx ecx, byte [eax + 0x533854]
mov dword [esp + 0x3c], ecx
cmp esi, ecx
jae 0x464d7e
cmp ebx, dword [esp + 0x1c]
jb 0x464d5d
test byte [esp + 0x100], 2
jne 0x464f9a
xor eax, eax
jmp 0x464d65
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x18], ebx
mov ecx, esi
add esi, 8
shl eax, cl
mov ecx, dword [esp + 0x3c]
or edx, eax
cmp esi, ecx
jb 0x464d45
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
movsx eax, byte [eax + 0x533858]
mov edi, 1
shl edi, cl
sub esi, ecx
dec edi
mov dword [esp + 0x38], esi
and edi, edx
shr edx, cl
add edi, eax
mov dword [esp + 0x24], edx
cmp dword [esp + 0x30], 0x10
jne 0x464db2
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + ebp + 0x2923]
jmp 0x464db4
xor eax, eax
push edi
push eax
mov eax, dword [esp + 0x18]
add eax, 0x2924
add eax, ebp
push eax
call fcn.004b4360
mov ecx, dword [esp + 0x1c]
add esp, 0xc
add ecx, edi
jmp 0x464b44
mov eax, dword [ebp + 0x30]
mov ecx, dword [ebp + 0x2c]
add eax, ecx
cmp eax, dword [esp + 0x10]
jne 0x46503b
push ecx
lea eax, [ebp + 0x2924]
push eax
lea eax, [ebp + 0x40]
push eax
call fcn.004b4730
mov eax, dword [ebp + 0x2c]
push dword [ebp + 0x30]
add eax, 0x2924
add eax, ebp
push eax
lea eax, [ebp + 0xde0]
push eax
call fcn.004b4730
add esp, 0x18
dec dword [ebp + 0x18]
mov edx, dword [esp + 0x24]
jmp 0x46498b
mov eax, 1
mov dword [ebp], 0x17
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x19
jmp 0x465198
mov eax, 1
mov dword [ebp], 0x1a
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x1b
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 2
mov dword [esp + 0x20], eax
mov dword [ebp], 0x35
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 3
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 5
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 6
jmp 0x465198
mov eax, 1
mov dword [ebp], 7
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x33
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 2
mov dword [esp + 0x20], eax
mov dword [ebp], 0x34
jmp 0x465198
test byte [esp + 0x100], 2
mov edx, dword [esp + 0x24]
je case.0x463c34.40
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x26
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0xb
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0xe
jmp 0x465198
mov eax, 1
mov dword [ebp], 0x10
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x12
jmp 0x465198
mov eax, 2
mov dword [ebp], 0x18
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, edi
or eax, 0xffffffff
mov dword [ebp], 0x27
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, dword [esp + 0x14]
or eax, 0xffffffff
mov dword [esp + 0x20], eax
mov dword [ebp], 0x28
jmp 0x465198
mov ebp, edi
or eax, 0xffffffff
mov dword [ebp], 0xa
mov dword [esp + 0x20], eax
jmp 0x465198
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x14]
or eax, 0xffffffff
mov dword [esp + 0x20], eax
mov dword [ebp], 0x23
jmp 0x465198
mov ebp, edi
or eax, 0xffffffff
mov dword [ebp], 0x11
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, edi
or eax, 0xffffffff
mov dword [ebp], 0x15
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, edi
or eax, 0xffffffff
mov dword [ebp], 0x25
mov dword [esp + 0x20], eax
jmp 0x465198
mov edi, dword [esp + 0x1c]
mov ecx, ebx
cmp ecx, edi
jae 0x465075
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x465081
test byte [esp + 0x100], 2
jne 0x4650ae
xor eax, eax
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
mov eax, esi
and eax, 7
cmp esi, eax
jae 0x46509d
cmp ebx, edi
jae 0x465075
movzx eax, byte [ebx]
inc ebx
jmp 0x465081
mov ebp, dword [esp + 0x14]
mov ecx, esi
and ecx, 7
shr edx, cl
sub esi, ecx
xor ecx, ecx
jmp 0x46510b
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x20
jmp 0x465198
mov edi, dword [esp + 0x1c]
mov ecx, ebx
cmp ecx, edi
jae 0x465121
movzx eax, byte [ecx]
lea ebx, [ecx + 1]
jmp 0x465133
mov edi, dword [esp + 0x1c]
mov eax, ebx
mov ebp, dword [esp + 0x14]
cmp eax, edi
jae 0x4650ef
movzx ecx, byte [eax]
lea ebx, [eax + 1]
jmp 0x4650fb
test byte [esp + 0x100], 2
jne 0x465170
xor ecx, ecx
mov eax, dword [ebp + 0x10]
shl eax, 8
or eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [ebp + 0x10], eax
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, 4
jae 0x465184
test esi, esi
je 0x465150
cmp esi, 8
jae 0x465145
cmp ebx, edi
jb 0x46512f
test byte [esp + 0x100], 2
jne 0x46515a
xor eax, eax
jmp 0x465133
movzx eax, byte [ebx]
inc ebx
mov ecx, esi
add esi, 8
shl eax, cl
or edx, eax
cmp esi, 8
jb 0x46511d
mov ebp, dword [esp + 0x14]
movzx ecx, dl
shr edx, 8
sub esi, 8
jmp 0x4650fb
cmp ebx, edi
jae 0x4650ef
movzx ecx, byte [ebx]
inc ebx
jmp 0x4650fb
mov ebp, dword [esp + 0x14]
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [ebp], 0x29
jmp 0x465198
mov eax, 1
mov dword [ebp], 0x2a
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, edi
xor eax, eax
mov dword [ebp], 0x22
mov dword [esp + 0x20], eax
jmp 0x465198
mov ebp, edi
or eax, 0xffffffff
mov ecx, dword [esp + 0x30]
sub ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
sub edi, dword [esp + 0x44]
test byte [esp + 0x100], 9
mov dword [ebp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov dword [ebp + 0x24], ecx
mov ecx, dword [esp + 0x3c]
mov dword [ebp + 0x28], ecx
mov ecx, dword [esp + 0x50]
mov dword [ebp + 0x3c], ecx
mov ecx, dword [esp + 0x60]
mov dword [ebp + 4], esi
mov dword [ebp + 0x38], edx
mov dword [esp + 0x28], edi
mov dword [ecx], ebx
mov ecx, dword [esp + 0x5c]
mov dword [ecx], edi
je 0x46535f
test eax, eax
js 0x46535f
mov esi, dword [ebp + 0x1c]
mov eax, 0x5e6ea9af
mul edi
mov ebx, edi
movzx ecx, si
shr edx, 0xb
imul eax, edx, 0x15b0
shr esi, 0x10
sub ebx, eax
mov dword [esp + 0x34], ebx
test edi, edi
je 0x46531f
xor edi, edi
cmp ebx, 7
jbe 0x465278
mov ebp, dword [esp + 0x44]
mov edx, 7
sub edx, ebp
movzx eax, byte [ebp]
add edi, 8
add ecx, eax
movzx eax, byte [ebp + 1]
add esi, ecx
add ecx, eax
movzx eax, byte [ebp + 2]
add esi, ecx
add ecx, eax
movzx eax, byte [ebp + 3]
add esi, ecx
add ecx, eax
movzx eax, byte [ebp + 4]
add esi, ecx
add ecx, eax
movzx eax, byte [ebp + 5]
add esi, ecx
add ecx, eax
movzx eax, byte [ebp + 6]
add esi, ecx
add ecx, eax
movzx eax, byte [ebp + 7]
add ebp, 8
add esi, ecx
add ecx, eax
add esi, ecx
lea eax, [edx + ebp]
cmp eax, ebx
jb 0x465227
mov dword [esp + 0x44], ebp
xor ebp, ebp
xor edx, edx
cmp edi, ebx
jae 0x4652e4
mov eax, ebx
sub eax, edi
cmp eax, 2
jb 0x4652cb
mov edx, ebx
mov ebx, ebp
sub edx, edi
sub edx, 2
shr edx, 1
inc edx
lea edi, [edi + edx*2]
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x44]
movzx eax, byte [edi]
add ecx, eax
movzx eax, byte [edi + 1]
add ebp, ecx
add edi, 2
add ecx, eax
add ebx, ecx
sub edx, 1
jne 0x4652a0
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x54]
cmp edi, ebx
jae 0x4652df
mov edi, dword [esp + 0x44]
movzx eax, byte [edi]
add ecx, eax
add esi, ecx
inc edi
mov dword [esp + 0x44], edi
lea eax, [edx + ebp]
add esi, eax
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul eax, edx, 0xffff000f
add esi, eax
sub dword [esp + 0x28], ebx
mov ebx, 0x15b0
mov dword [esp + 0x34], ebx
jne 0x465215
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
shl esi, 0x10
add esi, ecx
mov dword [ebp + 0x1c], esi
test eax, eax
jne 0x46535f
test byte [esp + 0x100], 1
je 0x46535f
cmp esi, dword [ebp + 0x10]
mov ecx, 0xfffffffe
cmovne eax, ecx
jmp 0x46535f
mov ecx, dword [esp + 0x5c]
mov eax, 0xfffffffd
mov dword [ecx], 0
mov ecx, dword [esp + 0x60]
mov dword [ecx], 0
mov ecx, dword [esp + 0xe8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004b0726
add esp, 0xdc
ret