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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x6a0
mov eax, dword [esp + 0x6c4]
mov edx, dword [esp + 0x6c8]
mov ebp, dword [esp + 0x6cc]
mov ecx, dword [esp + 0x6d0]
mov dword [esp + 0x2c], eax
test eax, eax
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x6d4]
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x6d8]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x6dc]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x6e0]
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0x6e4]
mov dword [esp + 0x18], edx
mov dword [esp + 0xb0], eax
jle 0x45d325
mov esi, ebp
and esi, 0x80002000
mov edi, ebp
and edi, 0x80001000
mov edx, ebp
xor ebx, ebx
cmp esi, 0x80002000
sete bl
and edx, 0x80000800
xor eax, eax
shl ebx, 0xa
cmp edi, 0x80001000
sete al
xor ecx, ecx
cmp edx, 0x80000800
sete cl
shl eax, 9
or ebx, eax
shl ecx, 8
or ebx, ecx
mov ecx, ebp
shr ecx, 0x16
and ecx, 7
test ebp, 0x80000000
jne 0x4591b7
test cl, 1
jne 0x4591b7
xor ecx, ecx
mov eax, 1
shl eax, cl
or ebx, eax
test cl, 4
je 0x4591e6
test cl, 2
je 0x4591d8
mov eax, 0xaaaa
mov dword [esp + 0xb4], eax
jmp 0x459215
mov eax, 0xfa
mov dword [esp + 0xb4], eax
jmp 0x459215
test cl, 2
je 0x4591f9
mov eax, 0xfa00
mov dword [esp + 0xb4], eax
jmp 0x459215
test cl, 1
je 0x459209
xor eax, eax
mov dword [esp + 0xb4], eax
jmp 0x459215
mov eax, 0xa8a8
mov dword [esp + 0xb4], eax
mov esi, dword [esp + 0x6b8]
mov edi, dword [esp + 0x6bc]
mov edx, dword [esp + 0x6c0]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x6b4]
mov dword [esp + 0x428], ebx
mov ecx, edx
mov dword [esp + 0xc8], esi
mov dword [esp + 0xcc], edi
mov eax, edx
and ecx, 0x7fff0000
mov dword [esp + 0x6b4], ebx
mov ebx, dword [esp + 0x14]
and eax, 0x80000000
xor edx, eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x6b8], esi
mov dword [esp + 0x6bc], edi
lea eax, [edx - 0x3fff0000]
test ecx, ecx
je 0x459291
cmp ecx, 0x7fff0000
jne 0x45965f
mov eax, edx
xor eax, ecx
or eax, dword [esp + 0xcc]
or eax, dword [esp + 0xc8]
or eax, dword [esp + 0x428]
jne 0x45937d
test ecx, ecx
je 0x459358
mov eax, dword [esp + 0x424]
mov dword [esp + 0x520], 0
test eax, eax
je 0x4592d5
mov eax, 0xfffffffc
jmp 0x4592da
mov eax, 4
mov edx, dword [esp + 0xa8]
mov dword [edx], eax
test ebx, 0x400
je 0x459301
test ebx, 0x200
je 0x4592fa
mov ecx, str.INFINITY
jmp 0x459306
mov ecx, 0x44d6014
jmp 0x459306
mov ecx, section._RDATA
mov eax, dword [esp + 0xb8]
movsx ebx, byte [ecx]
test ebx, ebx
je 0x45932e
movsx ebx, byte [ecx]
mov dword [esp + 0xcc], ebx
mov byte [eax], bl
movsx ebx, byte [ecx + 1]
add ecx, 1
add eax, 1
test ebx, ebx
jne 0x45931e
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0x1c]
mov ecx, eax
sub ecx, edx
mov dword [ebx], ecx
test ebp, 0x40000000
je 0x459351
mov ecx, 0xc
jmp 0x459be0
xor ecx, ecx
jmp 0x459be0
mov eax, dword [esp + 0x424]
test eax, eax
je 0x45936a
mov eax, 0xffffffff
jmp 0x45936f
mov eax, 1
mov edx, dword [esp + 0xa8]
mov dword [edx], eax
jmp 0x459478
test ecx, ecx
je 0x45944c
mov dword [esp + 0x520], 0
mov eax, ebx
and eax, 0x400
je 0x4593d3
test edx, 0x8000
jne 0x4593ba
mov edx, dword [esp + 0x424]
test edx, edx
je 0x4593b3
mov edx, 0xfffffffa
jmp 0x4593d5
mov edx, 6
jmp 0x4593d5
mov edx, dword [esp + 0x424]
test edx, edx
je 0x4593cc
mov edx, 0xfffffffb
jmp 0x4593d5
mov edx, 5
jmp 0x4593d5
xor edx, edx
mov ecx, dword [esp + 0xa8]
mov dword [ecx], edx
test eax, eax
je 0x4593f8
test ebx, 0x200
je 0x4593f1
mov ecx, 0x4b355c
jmp 0x4593fd
mov ecx, 0x44d6010
jmp 0x4593fd
mov ecx, 0x44d600c
mov eax, dword [esp + 0xb8]
movsx ebx, byte [ecx]
test ebx, ebx
je 0x459425
movsx ebx, byte [ecx]
mov dword [esp + 0xcc], ebx
mov byte [eax], bl
movsx ebx, byte [ecx + 1]
add ecx, 1
add eax, 1
test ebx, ebx
jne 0x459415
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0x1c]
mov ecx, eax
sub ecx, edx
mov dword [ebx], ecx
test ebp, 0x40000000
je 0x459351
mov ecx, 0xa
jmp 0x459be0
mov eax, dword [esp + 0x424]
test eax, eax
je 0x45945e
mov eax, 0xfffffffe
jmp 0x459463
mov eax, 2
mov ecx, dword [esp + 0xa8]
test ebp, 0x10000000
mov dword [ecx], eax
je 0x45952a
test ebp, 0x80
je 0x45948e
mov eax, 1
mov dword [esp + 0xb0], eax
jmp 0x4594e5
test ebp, 2
je 0x4594e5
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
lea edx, [eax + 1]
mov dword [esp + 0xb0], edx
cmp edx, ecx
jle 0x4594b7
mov eax, ecx
mov dword [esp + 0xb0], eax
jmp 0x4594e5
mov eax, edx
test eax, eax
jg 0x4594e5
mov eax, dword [esp + 0xb8]
lea eax, [eax + 1]
mov edx, dword [esp + 0xb8]
mov ecx, dword [esp + 0x1c]
mov byte [edx], 0x30
mov dword [ecx], 1
mov ecx, 6
jmp 0x459be0
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0xb0]
mov eax, edx
lea ecx, [ebx - 1]
test ebx, ebx
je 0x45950a
mov byte [eax], 0x30
add ecx, 0xffffffff
add eax, 1
cmp ecx, 0xffffffff
jne 0x4594fc
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 1
test ebp, 0x40000000
je 0x459351
mov ecx, 0xb
jmp 0x459be0
mov eax, dword [esp + 0x6b4]
mov ecx, dword [esp + 0x6b8]
mov esi, dword [esp + 0x6bc]
mov dword [esp + 0x6c0], edx
mov dword [esp + 0xa8], eax
mov eax, edx
mov dword [esp + 0x428], ecx
mov dword [esp + 0xc8], esi
and eax, 0x7fff0000
shr eax, 0x10
test eax, eax
je 0x4595f6
or edx, 0xffff0000
shl edx, 0xf
mov edi, esi
shr edi, 0x11
or edx, edi
shl esi, 0xf
mov edi, ecx
shr edi, 0x11
or esi, edi
mov edi, dword [esp + 0xa8]
mov dword [esp + 0xc8], esi
shl ecx, 0xf
mov esi, edi
shr esi, 0x11
or ecx, esi
mov dword [esp + 0x428], ecx
shl edi, 0xf
mov dword [esp + 0xa8], edi
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0x428]
mov edi, dword [esp + 0xa8]
mov dword [esp + 0x528], ecx
add eax, 0xffffc001
mov dword [esp + 0x52c], esi
mov dword [esp + 0x530], edi
shl eax, 0x10
shr edx, 0xf
movzx edx, dx
mov dword [esp + 0x524], edx
or eax, edx
jmp 0x459686
shl edx, 0x10
mov edi, esi
shr edi, 0x10
or edx, edi
shl esi, 0x10
mov edi, ecx
shr edi, 0x10
or esi, edi
mov edi, dword [esp + 0xa8]
mov dword [esp + 0xc8], esi
shl ecx, 0x10
mov esi, edi
shr esi, 0x10
or ecx, esi
mov dword [esp + 0x428], ecx
shl edi, 0x10
mov dword [esp + 0xa8], edi
test edx, edx
jne 0x45be37
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0x428]
jmp 0x45964d
xor edi, edi
mov edx, ecx
mov ecx, esi
mov esi, edi
add eax, 0xffffffe0
test edx, edx
je 0x45964b
jmp 0x45be1d
mov dword [esp + 0x6c0], edx
mov edx, dword [esp + 0x424]
test edx, edx
je 0x459678
mov edx, 0xfffffffd
jmp 0x45967d
mov edx, 3
mov ecx, dword [esp + 0xa8]
mov dword [ecx], edx
mov ecx, dword [esp + 0x424]
xor edx, edx
test ecx, ecx
setne dl
mov dword [esp + 0xac], edx
test ebx, 0x100
je 0x459c8c
and ebx, 0x200
je 0x4596bd
mov eax, 0x46
mov dword [esp + 0x424], eax
jmp 0x4596c9
mov eax, 0x66
mov dword [esp + 0x424], eax
test ebx, ebx
je 0x4596db
mov eax, 8
mov dword [esp + 0x158], eax
jmp 0x4596e7
mov eax, 0x28
mov dword [esp + 0x158], eax
mov eax, dword [esp + 0x6b4]
mov esi, dword [esp + 0x6b8]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x6bc]
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x6c0]
mov edx, esi
and edx, 0x7fff0000
shr edx, 0x10
mov dword [esp + 0xa4], edx
test edx, edx
je 0x459c21
mov edx, dword [esp + 0x428]
or esi, 0xffff0000
shl esi, 0xf
mov ecx, eax
shr ecx, 0x11
or esi, ecx
shl eax, 0xf
mov edi, edx
shr edi, 0x11
or eax, edi
shl edx, 0xf
mov edi, dword [esp + 0xc8]
mov ecx, edi
shr ecx, 0x11
or edx, ecx
shl edi, 0xf
mov dword [esp + 0x428], edx
mov dword [esp + 0xc8], edi
mov edi, dword [esp + 0x428]
mov dword [esp + 0x524], esi
mov dword [esp + 0x528], eax
mov dword [esp + 0x52c], edi
xor ecx, ecx
test eax, eax
setne cl
mov dword [esp + 0x430], ecx
mov edx, ecx
mov ecx, dword [esp + 0xc8]
add dword [esp + 0xa4], 0xffffc002
mov dword [esp + 0x530], ecx
xor eax, eax
test edi, edi
setne al
lea edx, [eax + edx + 1]
mov dword [esp + 0xbc], edx
xor eax, eax
test ecx, ecx
setne al
mov dword [esp + 0x154], eax
lea eax, [edx + eax]
mov dword [esp + 0x90], eax
mov eax, ebp
and eax, 2
mov dword [esp + 0x10], eax
jne 0x459805
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x520], 0
mov edx, 3
mov dword [esp + 0xb0], eax
jmp 0x459866
mov eax, dword [esp + 0x28]
test eax, eax
jl 0x45c007
mov edx, dword [esp + 0xa4]
and edx, 3
je 0x459824
neg edx
add edx, 4
jmp 0x459826
xor edx, edx
mov eax, dword [esp + 0xa4]
test eax, eax
jle 0x45bf67
mov edi, eax
mov dword [esp + 0x520], 0
lea eax, [edi + 3]
sar eax, 1
shr eax, 0x1e
lea edi, [eax + edi + 3]
mov eax, dword [esp + 0x2c]
sar edi, 2
add edi, dword [esp + 0x28]
cmp eax, edi
jge 0x45985f
mov edi, eax
mov dword [esp + 0xb0], edi
add dword [esp + 0xa4], edx
test edx, edx
je 0x459924
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x154]
shl esi, 2
mov edi, dword [esp + esi + 0x520]
mov dword [esp + 0x80], esi
mov ecx, edx
neg ecx
mov dword [esp + 0xcc], ecx
shl edi, cl
mov dword [esp + esi + 0x524], edi
mov ecx, edx
shr dword [esp + esi + 0x520], cl
mov esi, dword [esp + 0xbc]
lea eax, [esi + eax - 1]
test eax, eax
je 0x4598f2
mov eax, dword [esp + 0x154]
mov edi, dword [esp + 0xcc]
lea eax, [esi + eax - 1]
mov esi, dword [esp + eax*4 + 0x520]
mov ecx, edi
shl esi, cl
mov ecx, edx
shr dword [esp + eax*4 + 0x520], cl
or dword [esp + eax*4 + 0x524], esi
add eax, 0xffffffff
jne 0x4598d2
mov esi, dword [esp + 0x524]
mov eax, dword [esp + 0x80]
mov edx, dword [esp + eax + 0x524]
test edx, edx
je 0x459924
mov eax, dword [esp + 0x154]
mov edx, dword [esp + 0xbc]
lea ecx, [edx + eax + 1]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0xb8]
mov byte [eax], 0x30
lea edx, [eax + 1]
mov dword [esp + 0xcc], ecx
mov eax, edx
test ecx, ecx
jle 0x45bf54
mov dword [esp + 0x428], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], ebp
mov ecx, 8
mov dword [esp + 0xc8], ecx
mov edx, ecx
xor edi, edi
mov dword [esp + 0x154], edi
mov ebp, edi
mov ecx, 1
mov edi, dword [esp + 0xcc]
mov dword [esp + 0x430], ecx
add edi, 0xffffffff
test edx, edx
jne 0x4599b7
mov ebx, dword [esp + 0x90]
mov ecx, dword [esp + 0x430]
cmp ecx, ebx
jae 0x45beec
add ecx, 1
mov esi, dword [esp + ecx*4 + 0x520]
mov dword [esp + 0x430], ecx
mov edx, 8
mov ebx, esi
shr ebx, 0x1c
mov ebp, ebx
and ebp, 1
shl esi, 4
add edx, 0xffffffff
cmp ebx, 0xa
jge 0x4599d1
add ebx, 0x30
jmp 0x4599e1
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x4599de
add ebx, 0x37
jmp 0x4599e1
add ebx, 0x57
mov byte [eax], bl
add eax, 1
test edi, edi
jg 0x459984
mov ecx, dword [esp + 0x430]
mov dword [esp + 0x154], ebp
mov ebp, dword [esp + 0xc]
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0x428]
mov ebx, dword [esp + 0xc8]
test ebx, ebx
jne 0x459a2e
mov ebx, dword [esp + 0x90]
cmp ecx, ebx
jae 0x459a2c
add ecx, 1
mov esi, dword [esp + ecx*4 + 0x520]
jmp 0x459a2e
xor esi, esi
mov ebx, dword [esp + 0x90]
add ecx, 1
cmp ecx, ebx
ja 0x45bf46
sub ebx, ecx
cmp ebx, 6
jb 0x45bf38
mov edi, dword [esp + 0x90]
xor ebx, ebx
mov dword [esp + 0xcc], ebx
lea ebx, [edi - 6]
mov edi, dword [esp + 0xcc]
or edi, dword [esp + ecx*4 + 0x520]
or edi, dword [esp + ecx*4 + 0x524]
or edi, dword [esp + ecx*4 + 0x528]
or edi, dword [esp + ecx*4 + 0x52c]
or edi, dword [esp + ecx*4 + 0x530]
add ecx, 5
cmp ecx, ebx
jbe 0x459a65
mov dword [esp + 0xcc], edi
mov ebx, dword [esp + 0xcc]
mov edi, dword [esp + 0x90]
or ebx, dword [esp + ecx*4 + 0x520]
add ecx, 1
cmp ecx, edi
jbe 0x459aa4
mov dword [esp + 0xcc], ebx
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0x16c], eax
mov edi, esi
xor ecx, ecx
and edi, 0x7fffffff
test edi, edi
setne cl
shr esi, 0x1f
or ebx, ecx
xor ecx, ecx
mov dword [esp + 0x430], ecx
test ebx, ebx
setne cl
mov ebx, dword [esp + 0x154]
mov dword [esp + 0x430], ecx
mov ecx, dword [esp + 0xac]
add ebx, ebx
lea ecx, [ebx + ecx*8]
mov ebx, dword [esp + 0x430]
lea esi, [esi + ebx*4]
mov ebx, dword [esp + 0x1c]
add ecx, esi
mov esi, dword [esp + 0xb4]
shr esi, cl
mov ecx, dword [esp + 0xa4]
mov dword [ebx], ecx
and esi, 1
mov ebx, 4
test esi, esi
je 0x459b89
mov edi, dword [esp + 0x424]
lea esi, [eax - 1]
movsx ecx, byte [esi]
mov dword [esp + 0xcc], ecx
cmp ecx, edi
jne 0x459b5d
movsx ecx, byte [esi - 1]
mov eax, esi
add esi, 0xffffffff
cmp ecx, edi
je 0x459b49
mov dword [esp + 0xcc], ecx
cmp ecx, 0x39
je 0x459b6e
mov ecx, 1
mov dword [esp + 0x158], ecx
mov ecx, dword [esp + 0xcc]
add ecx, dword [esp + 0x158]
mov byte [eax - 1], cl
cmp eax, edx
je 0x45bf03
jmp 0x459b98
mov ecx, dword [esp + 0xb0]
test ecx, ecx
jle 0x459478
test ebp, 0x80
je 0x459bbb
lea ecx, [eax - 1]
movsx ebx, byte [ecx]
cmp ebx, 0x30
jne 0x459bde
movsx ebx, byte [ecx - 1]
mov eax, ecx
add ecx, 0xffffffff
cmp ebx, 0x30
je 0x459bab
jmp 0x459bde
mov ebx, dword [esp + 0xb0]
mov ecx, eax
sub ecx, edx
sub ebx, ecx
lea ecx, [ebx - 1]
test ebx, ebx
jle 0x459bde
mov byte [eax], 0x30
mov ebx, ecx
add eax, 1
add ecx, 0xffffffff
test ebx, ebx
jg 0x459bcf
xor ecx, ecx
mov ebx, dword [esp + 0x24]
mov byte [eax], 0
test ebx, ebx
je 0x459bf9
mov ebp, ebx
mov ebx, edx
sub ebx, dword [esp + 0xb8]
mov dword [ebp], ebx
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x459c0a
sub eax, dword [esp + 0xb8]
mov dword [ebx], eax
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x459c14
mov dword [ebx], ecx
mov eax, edx
add esp, 0x6a0
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0x428]
shl esi, 0x10
mov ecx, eax
shr ecx, 0x10
or esi, ecx
shl eax, 0x10
mov edi, edx
shr edi, 0x10
or eax, edi
mov edi, dword [esp + 0xc8]
shl edx, 0x10
mov ecx, edi
shr ecx, 0x10
or edx, ecx
mov dword [esp + 0x428], edx
shl edi, 0x10
mov dword [esp + 0xc8], edi
test esi, esi
jne 0x45c030
mov edi, dword [esp + 0xa4]
mov ecx, edx
mov edx, dword [esp + 0xc8]
jmp 0x459c7a
xor edx, edx
mov esi, eax
mov eax, ecx
mov ecx, edx
add edi, 0xffffffe0
test esi, esi
je 0x459c78
jmp 0x45c016
mov dword [esp + 0x520], 0
test eax, eax
jl 0x45d31b
mov edx, 0x4d104d42
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esp]
imul dword [esp + 4]
mov dword [esp + 8], edx
movsx edi, word [esp + 0xa]
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], ebp
add edi, 1
mov dword [esp + 0xa4], edi
xor esi, esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x424], esi
mov dword [esp + 0x90], esi
mov dword [esp + 0x158], esi
mov eax, ebp
and eax, 2
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xb8]
lea eax, [eax + 1]
mov dword [esp + 0xbc], eax
jmp 0x459d1a
mov eax, dword [esp + 0xa4]
neg eax
add eax, 1
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x459d73
mov eax, dword [esp + 0x28]
test eax, eax
jl 0x45c161
mov edx, eax
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0x2c]
lea ecx, [eax + edx]
cmp ecx, ebx
mov dword [esp + 0xb0], ecx
jle 0x459d5a
mov edx, dword [esp + 0x1c]
mov ecx, ebx
mov dword [esp + 0xb0], ecx
mov dword [edx], eax
jmp 0x459d80
mov eax, ecx
test eax, eax
jle 0x45c0e3
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xa4]
mov dword [edx], eax
jmp 0x459d80
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xa4]
mov dword [edx], eax
neg eax
mov dword [esp + 0xa4], eax
jne 0x45a331
mov ebp, dword [esp + 0x6b4]
mov esi, dword [esp + 0x6b8]
mov eax, dword [esp + 0x6bc]
mov edi, dword [esp + 0x6c0]
mov ebx, edi
and ebx, 0x7fff0000
shr ebx, 0x10
test ebx, ebx
je 0x45a2f3
or edi, 0xffff0000
shl edi, 0xf
mov edx, eax
shr edx, 0x11
or edi, edx
shl eax, 0xf
mov ecx, esi
shr ecx, 0x11
or eax, ecx
shl esi, 0xf
mov edx, ebp
shr edx, 0x11
or esi, edx
shl ebp, 0xf
mov dword [esp + 0x524], edi
mov dword [esp + 0x528], eax
mov dword [esp + 0x52c], esi
mov dword [esp + 0x530], ebp
add ebx, 0xffffc002
xor edx, edx
mov dword [esp + 0xcc], ebx
test eax, eax
setne dl
xor eax, eax
test esi, esi
setne al
lea eax, [eax + edx + 1]
xor ecx, ecx
test ebp, ebp
setne cl
mov edx, 0x71
add eax, ecx
mov dword [esp + 0xc8], edx
mov dword [esp + 0x504], eax
xor ecx, ecx
mov dword [esp + 0xd0], ecx
mov eax, dword [esp + 0xcc]
test eax, eax
jg 0x459d07
neg eax
mov dword [esp + 0xcc], eax
je 0x459ed0
mov esi, dword [esp + 0x504]
mov ebp, eax
mov edx, esi
shl edx, 2
mov eax, ebp
neg eax
mov ebx, dword [esp + edx + 0x520]
mov ecx, eax
shl ebx, cl
mov ecx, ebp
shr dword [esp + edx + 0x520], cl
add esi, 0xffffffff
mov dword [esp + edx + 0x524], ebx
je 0x459ebd
mov ebx, dword [esp + 0x504]
mov esi, ecx
lea ebx, [ebx - 1]
mov ebp, dword [esp + ebx*4 + 0x520]
mov ecx, eax
shl ebp, cl
mov ecx, esi
shr dword [esp + ebx*4 + 0x520], cl
or dword [esp + ebx*4 + 0x524], ebp
add ebx, 0xffffffff
jne 0x459e9d
mov eax, dword [esp + edx + 0x524]
test eax, eax
je 0x459ed0
add dword [esp + 0x504], 1
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x16c], eax
cmp ecx, 0x25
mov byte [edx], 0x30
mov dword [esp + 0x428], eax
mov edx, 0x25
jge 0x459f02
mov edx, ecx
test edx, edx
je 0x45c1ed
mov ebp, dword [esp + 0x504]
mov edi, dword [esp + 0x16c]
xor ebx, ebx
mov dword [esp + 0x520], 0
xor esi, esi
test ebp, ebp
je 0x459fec
mov esi, dword [esp + ebp*4 + 0x520]
mov dword [esp + ebp*4 + 0x520], 0
mov eax, 0
je 0x459fde
mov dword [esp + 0x42c], ebx
mov eax, ebp
mov dword [esp + 0x430], edx
mov dword [esp + 0x504], ebp
mov dword [esp + 0x16c], edi
mov ebp, dword [esp + eax*4 + 0x520]
mov ebx, esi
shr ebx, 0x1e
lea edx, [esi + esi*4]
cmp edx, esi
mov ecx, 0
adc ecx, 0
mov esi, edx
shr esi, 0x1f
add ecx, ebx
add ecx, ecx
or ecx, esi
mov esi, dword [esp + eax*4 + 0x51c]
lea ebx, [edx + edx]
lea edi, [ebp + edx*2]
cmp edi, ebx
mov dword [esp + eax*4 + 0x520], edi
mov edx, 0
adc edx, 0
add edx, ecx
mov dword [esp + eax*4 + 0x51c], edx
add eax, 0xffffffff
jne 0x459f6a
mov ebx, dword [esp + 0x42c]
mov edx, dword [esp + 0x430]
mov ebp, dword [esp + 0x504]
mov edi, dword [esp + 0x16c]
mov eax, dword [esp + ebp*4 + 0x520]
mov esi, dword [esp + 0x520]
test eax, eax
jne 0x459fec
add ebp, 0xffffffff
add ebx, 0x35269
lea eax, [esi + 0x30]
mov byte [edi], al
add edi, 1
add edx, 0xffffffff
jne 0x459f1a
mov dword [esp + 0x16c], edi
mov ebp, dword [esp + 0xc8]
mov edx, dword [esp + 0x524]
add ebx, 0xffff
mov dword [esp + 0x504], edx
lea eax, [ebp + 0x1f]
and eax, 0xffffffe0
mov dword [esp + 0xcc], eax
shr ebx, 0x10
sub ebx, ebp
add ebx, eax
mov eax, dword [esp + 0xd0]
mov ecx, ebx
mov ebp, eax
shl ebp, cl
lea edi, [edx - 0x80000000]
mov dword [esp + 0xc4], edi
and esi, 1
xor eax, eax
test edi, edi
setge al
je 0x45a070
mov edx, edi
cmp edx, 0x80000000
je 0x45a070
mov edi, 1
jmp 0x45a072
xor edi, edi
mov edx, dword [esp + 0xac]
add esi, esi
lea esi, [esi + edx*8]
mov edx, dword [esp + 0x504]
mov dword [esp + 0xc0], esi
add eax, esi
lea ecx, [eax + edi*4]
mov edi, dword [esp + 0xb4]
shr edi, cl
lea esi, [ebp + edx - 0x80000000]
and edi, 1
mov dword [esp + 0x340], edi
lea edi, [ebp + ebp]
xor edx, edx
cmp esi, edi
setbe dl
mov esi, dword [esp + 0xcc]
sub esi, ebx
cmp esi, 0x20
jb 0x45a2aa
mov edx, dword [esp + 0x504]
add edx, 0x80000001
cmp edx, 1
ja 0x45c16d
mov edx, dword [esp + 0xd0]
mov esi, ebx
shr esi, 5
mov ecx, ebx
mov ebp, edx
shl ebp, cl
mov ebx, dword [esp + 0xcc]
shr ebx, 5
mov edx, ebp
mov ecx, ebp
sub ebx, esi
mov dword [esp + 0xcc], ebx
cmp ebx, 1
jle 0x45a261
lea ebx, [ebx - 1]
cmp ebx, 5
jl 0x45a1ff
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0x84], ebp
mov ebp, dword [esp + 0xc4]
mov esi, dword [esp + ebx*4 + 0x520]
add edx, esi
neg ecx
add ecx, esi
mov edi, 0
xor eax, eax
test esi, esi
setne al
cmp edx, esi
adc edi, 0
mov edx, dword [esp + ebx*4 + 0x51c]
or ebp, eax
cmp esi, ecx
mov ecx, 0
adc ecx, 0
add edi, edx
xor eax, eax
test edx, edx
setne al
neg ecx
add ecx, edx
or ebp, eax
cmp edi, edx
mov esi, 0
adc esi, 0
cmp edx, ecx
mov ecx, dword [esp + ebx*4 + 0x518]
mov edi, 0
adc edi, 0
add esi, ecx
mov edx, 0
neg edi
add edi, ecx
xor eax, eax
test ecx, ecx
setne al
cmp esi, ecx
adc edx, 0
or ebp, eax
cmp ecx, edi
mov esi, 0
adc esi, 0
mov eax, dword [esp + ebx*4 + 0x514]
add edx, eax
xor ecx, ecx
test eax, eax
setne cl
neg esi
add esi, eax
or ebp, ecx
cmp edx, eax
mov edx, 0
adc edx, 0
cmp eax, esi
mov ecx, 0
adc ecx, 0
add ebx, 0xfffffffc
cmp ebx, 6
jge 0x45a131
mov dword [esp + 0xcc], ebx
mov eax, ebx
mov dword [esp + 0xc4], ebp
lea ebx, [eax - 1]
mov ebp, dword [esp + 0x84]
mov eax, dword [esp + 0xcc]
mov esi, dword [esp + 0xc4]
jmp 0x45a212
add ebx, 0xffffffff
mov edi, dword [esp + eax*4 + 0x520]
add edx, edi
neg ecx
add ecx, edi
xor eax, eax
test edi, edi
setne al
cmp edx, edi
mov edx, 0
adc edx, 0
or esi, eax
cmp edi, ecx
mov ecx, 0
adc ecx, 0
mov eax, ebx
cmp ebx, 1
jg 0x45a20f
mov dword [esp + 0xcc], eax
mov dword [esp + 0xc4], esi
mov ebx, esi
xor eax, eax
test ebx, ebx
setge al
add eax, dword [esp + 0xc0]
mov ebx, dword [esp + 0xcc]
mov esi, dword [esp + ebx*4 + 0x520]
add edx, esi
sub esi, ecx
xor edx, esi
shr edx, 0x1f
mov ecx, dword [esp + 0xc4]
test ecx, ecx
je 0x45a292
cmp ecx, 0x80000000
je 0x45a292
mov ecx, 1
jmp 0x45a294
xor ecx, ecx
mov ebx, dword [esp + 0xb4]
lea ecx, [eax + ecx*4]
shr ebx, cl
and ebx, 1
mov dword [esp + 0x340], ebx
test edx, edx
je 0x45c16d
test ebp, ebp
je 0x45c16d
mov eax, dword [esp + 0xc8]
cmp eax, 0x80
jae 0x45c1a3
cmp eax, 0x40
jae 0x45a2e2
mov eax, 0x40
mov dword [esp + 0xc8], eax
jmp 0x45a377
mov eax, 0x80
mov dword [esp + 0xc8], eax
jmp 0x45a377
shl edi, 0x10
mov edx, eax
shr edx, 0x10
or edi, edx
shl eax, 0x10
mov ecx, esi
shr ecx, 0x10
or eax, ecx
shl esi, 0x10
mov edx, ebp
shr edx, 0x10
or esi, edx
shl ebp, 0x10
test edi, edi
je 0x45a31f
jmp 0x45c200
xor ebp, ebp
mov edi, eax
mov eax, esi
mov esi, ebp
add ebx, 0xffffffe0
test edi, edi
je 0x45a31d
jmp 0x45c1fb
cmp eax, 0xfffffeaa
jl 0x45a33f
cmp eax, 0x159
jle 0x45a346
mov edx, 0x80
jmp 0x45a35e
mov eax, dword [esp + 0xb0]
cmp eax, 0x11
jle 0x45a359
mov edx, 0x80
jmp 0x45a35e
mov edx, 0x40
mov dword [esp + 0xc8], edx
xor ecx, ecx
cmp edx, 0x80
setne cl
mov dword [esp + 0xd0], ecx
mov eax, dword [esp + 0x6b4]
mov edx, dword [esp + 0x6b8]
mov esi, dword [esp + 0x6bc]
mov ebp, dword [esp + 0x6c0]
mov ecx, ebp
and ecx, 0x7fff0000
shr ecx, 0x10
mov dword [esp + 0xcc], ecx
test ecx, ecx
je 0x45bdd7
or ebp, 0xffff0000
shl ebp, 0xf
mov ecx, esi
shr ecx, 0x11
or ebp, ecx
shl esi, 0xf
mov ebx, edx
shr ebx, 0x11
or esi, ebx
shl edx, 0xf
mov edi, eax
shr edi, 0x11
or edx, edi
shl eax, 0xf
mov dword [esp + 0x524], ebp
mov dword [esp + 0x528], esi
mov dword [esp + 0x52c], edx
mov dword [esp + 0x530], eax
xor ecx, ecx
test esi, esi
setne cl
add dword [esp + 0xcc], 0xffffc002
xor ebx, ebx
test edx, edx
setne bl
xor edx, edx
test eax, eax
setne dl
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x16c], edx
lea esi, [ebx + ecx + 1]
lea edi, [esi + edx]
cmp eax, 0x40
mov dword [esp + 0xa8], edi
mov edi, dword [esp + 0xa4]
jne 0x45a83a
mov eax, edi
cmp eax, 0xffffffd1
jl 0x45a4fa
cmp eax, 0x2f
jg 0x45a499
mov ecx, eax
movsx eax, word [ecx*2 + 0x4bcd5e]
mov edx, dword [ecx*8 + 0x4bcb7c]
mov ebx, dword [ecx*8 + 0x4bcb78]
mov dword [esp + 0x154], eax
test ebx, ebx
mov dword [esp + 0x5e4], edx
mov dword [esp + 0x5e8], ebx
jne 0x45c273
mov edi, 2
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45a486
jmp 0x45b74f
mov edx, eax
mov ecx, edx
sar ecx, 3
lea ebx, [ecx + ecx]
movzx eax, word [ebx + 0x4bcf42]
shr eax, 5
cmp eax, edx
jg 0x45a4b5
lea ebx, [ecx + ecx + 2]
movzx eax, word [ebx + 0x4bcf40]
mov ebx, eax
and ebx, 0x1f
movsx edx, word [ebx*2 + 0x4bcfbc]
mov ecx, dword [ebx*8 + 0x4bcec4]
mov ebp, dword [ebx*8 + 0x4bcec0]
mov dword [esp + 0x90], edx
mov dword [esp + 0x4c8], ecx
shr eax, 5
mov dword [esp + 0x4cc], ebp
neg eax
add eax, dword [esp + 0xa4]
jmp 0x45a556
mov edx, eax
neg edx
mov ecx, edx
sar ecx, 3
movzx ebx, word [ecx*2 + 0x4bce40]
mov eax, ebx
shr eax, 5
cmp eax, edx
jge 0x45a521
movzx ebx, word [ecx*2 + 0x4bce42]
mov eax, ebx
shr eax, 5
add eax, dword [esp + 0xa4]
and ebx, 0x1f
movsx edx, word [ebx*2 + 0x4bcf9c]
mov ecx, dword [ebx*8 + 0x4bcdc4]
mov ebx, dword [ebx*8 + 0x4bcdc0]
mov dword [esp + 0x90], edx
mov dword [esp + 0x4c8], ecx
mov dword [esp + 0x4cc], ebx
movsx edx, word [eax*2 + 0x4bcd5e]
mov ecx, dword [eax*8 + 0x4bcb7c]
mov eax, dword [eax*8 + 0x4bcb78]
mov dword [esp + 0x154], edx
test eax, eax
mov dword [esp + 0x5e4], ecx
mov dword [esp + 0x5e8], eax
jne 0x45c4bf
mov ebp, 2
mov eax, dword [esp + ebp*4 + 0x5dc]
add ebp, 0xffffffff
test eax, eax
je 0x45a58e
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x4cc]
mov dword [esp + 0x88], eax
lea edi, [ebp + 2]
mov eax, dword [esp + 0x8c]
mul dword [esp + 0x88]
mov dword [esp + 0x51c], eax
mov dword [esp + 0x518], edx
mov eax, dword [esp + 0x51c]
mov edx, dword [esp + 0x518]
mov ecx, dword [esp + ebp*4 + 0x5e0]
mov ebx, dword [esp + 0x4c8]
mov dword [esp + 0x508], ecx
mov dword [esp + ebp*4 + 0x48c], eax
mov dword [esp + 0x50c], ebx
mov dword [esp + ebp*4 + 0x488], edx
mov dword [esp + ebp*4 + 0x448], 0
mov eax, dword [esp + 0x508]
mul dword [esp + 0x50c]
mov dword [esp + 0x514], eax
mov dword [esp + 0x510], edx
mov eax, dword [esp + ebp*4 + 0x488]
add eax, dword [esp + 0x514]
cmp eax, dword [esp + 0x514]
mov dword [esp + ebp*4 + 0x488], eax
mov ecx, 0
mov edx, ecx
adc edx, 0
add edx, dword [esp + 0x510]
mov dword [esp + ebp*4 + 0x484], edx
lea eax, [ebp - 1]
test eax, eax
mov dword [esp + ebp*4 + 0x444], ecx
jl 0x45a6dd
cmp eax, 6
jl 0x45a6c6
xor edx, edx
mov dword [esp + eax*4 + 0x444], edx
mov dword [esp + eax*4 + 0x484], edx
mov dword [esp + eax*4 + 0x440], edx
mov dword [esp + eax*4 + 0x480], edx
mov dword [esp + eax*4 + 0x43c], edx
mov dword [esp + eax*4 + 0x47c], edx
mov dword [esp + eax*4 + 0x438], edx
mov dword [esp + eax*4 + 0x478], edx
mov dword [esp + eax*4 + 0x434], edx
mov dword [esp + eax*4 + 0x474], edx
add eax, 0xfffffffb
cmp eax, 6
jge 0x45a676
xor edx, edx
mov dword [esp + eax*4 + 0x444], edx
mov dword [esp + eax*4 + 0x484], edx
add eax, 0xffffffff
test eax, eax
jge 0x45a6c6
add ebp, 0xffffffff
je 0x45a7b9
mov dword [esp + 0xc4], edi
mov eax, ebp
mov dword [esp + 0x428], esi
shl eax, 2
mov dword [esp + 0x504], eax
mov ebx, 8
lea ecx, [eax + 8]
mov eax, dword [esp + ebp*4 + 0x5e0]
mov edx, dword [esp + ebx + 0x4c4]
mov dword [esp + 0x680], eax
mov dword [esp + 0x684], edx
mov eax, dword [esp + 0x680]
mul dword [esp + 0x684]
mov dword [esp + 0x68c], eax
mov dword [esp + 0x688], edx
mov eax, dword [esp + ecx + 0x484]
add eax, dword [esp + 0x68c]
cmp eax, dword [esp + 0x68c]
mov edx, dword [esp + ecx + 0x480]
mov dword [esp + ecx + 0x484], eax
mov esi, 0
adc esi, 0
mov edi, 0
add esi, dword [esp + 0x688]
add edx, esi
cmp edx, esi
adc edi, 0
mov dword [esp + ecx + 0x480], edx
add dword [esp + ecx + 0x43c], edi
add ecx, 0xfffffffc
add ebx, 0xfffffffc
jne 0x45a708
mov eax, dword [esp + 0x504]
add eax, 0xfffffffc
add ebp, 0xffffffff
jne 0x45a6f9
mov edi, dword [esp + 0xc4]
mov esi, dword [esp + 0x428]
mov eax, dword [esp + 0x154]
add eax, dword [esp + 0x90]
mov ecx, edi
shl ecx, 2
mov edx, dword [esp + ecx + 0x484]
mov dword [esp + ecx + 0x5e0], edx
mov dword [esp + 0x154], eax
mov eax, edi
add eax, 0xffffffff
je 0x45a819
xor ebx, ebx
mov edx, eax
add ebx, dword [esp + edx*4 + 0x444]
mov ebp, dword [esp + edx*4 + 0x484]
add ebp, ebx
cmp ebp, ebx
mov dword [esp + edx*4 + 0x5e0], ebp
mov ebx, 0
adc ebx, 0
add edx, 0xffffffff
jne 0x45a7ec
mov edx, dword [esp + ecx + 0x5e0]
test edx, edx
je 0x45a825
jmp 0x45c286
add eax, 0xffffffff
mov ecx, eax
shl ecx, 2
mov edx, dword [esp + ecx + 0x5e0]
test edx, edx
je 0x45a822
jmp 0x45c284
mov eax, edi
cmp eax, 0xfffffdea
jge 0x45ae79
cmp eax, 0xfffff000
jle 0x45a874
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x158]
xor ebx, ebx
mov eax, 0x1000
mov ebp, 3
mov dword [esp + 0x154], eax
jmp 0x45ae42
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x158]
xor ebx, ebx
mov eax, 0x1000
mov ebp, 3
mov dword [esp + 0x154], eax
add edi, dword [esp + 0x154]
test ebx, ebx
je 0x45adfc
movsx edx, word [ebp*2 + 0x4bc9c0]
mov dword [esp + 0x90], edx
mov ecx, ebp
shl ecx, 4
lea edx, [ebx + 4]
mov eax, dword [ecx + 0x4bc6ac]
mov dword [esp + 0x4c8], eax
mov eax, dword [ecx + 0x4bc6a8]
mov dword [esp + 0x4cc], eax
mov eax, dword [ecx + 0x4bc6a4]
mov dword [esp + 0x4d0], eax
mov eax, dword [ecx + 0x4bc6a0]
mov dword [esp + 0x4d4], eax
mov dword [esp + 0xc0], edx
mov edx, dword [esp + ebx*4 + 0x300]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
lea ecx, [ebx + 3]
mov dword [esp + 0x84], ecx
mov eax, dword [esp + 0x50]
mul dword [esp + 0x54]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x84]
mov dword [esp + eax*4 + 0x204], edx
mov edx, dword [esp + 0x58]
mov dword [esp + eax*4 + 0x200], edx
mov dword [esp + 0x158], esi
mov eax, 3
mov esi, eax
mov edx, dword [esp + ebx*4 + 0x300]
mov dword [esp + ecx*4 + 0x240], 0
mov dword [esp + 0x344], edx
mov edx, dword [esp + esi*4 + 0x4c4]
mov dword [esp + 0x348], edx
mov eax, dword [esp + 0x344]
mul dword [esp + 0x348]
mov dword [esp + 0x350], eax
mov dword [esp + 0x34c], edx
mov edx, dword [esp + ecx*4 + 0x200]
add edx, dword [esp + 0x350]
cmp edx, dword [esp + 0x350]
mov dword [esp + ecx*4 + 0x200], edx
mov edx, 0
adc edx, 0
add ecx, 0xffffffff
add edx, dword [esp + 0x34c]
mov dword [esp + ecx*4 + 0x200], edx
add esi, 0xffffffff
jne 0x45a94a
mov esi, dword [esp + 0x158]
mov dword [esp + ecx*4 + 0x240], 0
add ecx, 0xffffffff
test ecx, ecx
jl 0x45aa4c
cmp ecx, 6
jl 0x45aa35
xor eax, eax
mov dword [esp + ecx*4 + 0x240], eax
mov dword [esp + ecx*4 + 0x200], eax
mov dword [esp + ecx*4 + 0x23c], eax
mov dword [esp + ecx*4 + 0x1fc], eax
mov dword [esp + ecx*4 + 0x238], eax
mov dword [esp + ecx*4 + 0x1f8], eax
mov dword [esp + ecx*4 + 0x234], eax
mov dword [esp + ecx*4 + 0x1f4], eax
mov dword [esp + ecx*4 + 0x230], eax
mov dword [esp + ecx*4 + 0x1f0], eax
add ecx, 0xfffffffb
cmp ecx, 6
jge 0x45a9e5
xor eax, eax
mov dword [esp + ecx*4 + 0x240], eax
mov dword [esp + ecx*4 + 0x200], eax
add ecx, 0xffffffff
test ecx, ecx
jge 0x45aa35
add ebx, 0xffffffff
je 0x45ab36
mov dword [esp + 0x504], ebp
mov eax, ebx
mov dword [esp + 0xc4], edi
mov dword [esp + 0x158], esi
shl eax, 2
mov dword [esp + 0x340], eax
mov ebp, 0x10
lea ecx, [eax + 0x10]
mov eax, dword [esp + ebx*4 + 0x300]
mov edx, dword [esp + ebp + 0x4c4]
mov dword [esp + 0x650], eax
mov dword [esp + 0x654], edx
mov eax, dword [esp + 0x650]
mul dword [esp + 0x654]
mov dword [esp + 0x65c], eax
mov dword [esp + 0x658], edx
mov eax, dword [esp + ecx + 0x200]
add eax, dword [esp + 0x65c]
cmp eax, dword [esp + 0x65c]
mov edx, dword [esp + ecx + 0x1fc]
mov dword [esp + ecx + 0x200], eax
mov esi, 0
adc esi, 0
mov edi, 0
add esi, dword [esp + 0x658]
add edx, esi
cmp edx, esi
adc edi, 0
mov dword [esp + ecx + 0x1fc], edx
add dword [esp + ecx + 0x238], edi
add ecx, 0xfffffffc
add ebp, 0xfffffffc
jne 0x45aa7e
mov eax, dword [esp + 0x340]
add eax, 0xfffffffc
add ebx, 0xffffffff
jne 0x45aa6f
mov ebp, dword [esp + 0x504]
mov edi, dword [esp + 0xc4]
mov esi, dword [esp + 0x158]
add esi, dword [esp + 0x90]
mov ebx, dword [esp + 0xc0]
mov edx, dword [esp + ebx*4 + 0x200]
mov eax, dword [esp + 0x84]
mov dword [esp + ebx*4 + 0x300], edx
test eax, eax
je 0x45ab98
mov edx, ebx
xor eax, eax
lea edx, [edx - 1]
add eax, dword [esp + edx*4 + 0x240]
mov ecx, dword [esp + edx*4 + 0x200]
add ecx, eax
cmp ecx, eax
mov dword [esp + edx*4 + 0x300], ecx
mov eax, 0
adc eax, 0
add edx, 0xffffffff
jne 0x45ab64
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + eax*4 + 0x300]
test edx, edx
jne 0x45abaa
add ebx, 0xffffffff
mov eax, dword [esp + ebx*4 + 0x300]
test eax, eax
je 0x45ab9c
mov eax, dword [esp + 0x304]
test eax, eax
jle 0x45ac94
add eax, eax
mov dword [esp + 0x304], eax
add esi, 0xffffffff
cmp ebx, 2
jb 0x45ac94
lea eax, [ebx - 2]
cmp eax, 5
jb 0x45c4d0
mov dword [esp + 0x158], esi
mov edx, 2
lea eax, [ebx - 5]
mov ecx, dword [esp + edx*4 + 0x300]
mov esi, dword [esp + edx*4 + 0x304]
shr ecx, 0x1f
shr esi, 0x1f
or dword [esp + edx*4 + 0x2fc], ecx
mov ecx, dword [esp + edx*4 + 0x300]
add ecx, ecx
or ecx, esi
mov esi, dword [esp + edx*4 + 0x304]
mov dword [esp + edx*4 + 0x300], ecx
mov ecx, dword [esp + edx*4 + 0x308]
add esi, esi
shr ecx, 0x1f
or esi, ecx
mov ecx, dword [esp + edx*4 + 0x30c]
mov dword [esp + edx*4 + 0x304], esi
mov esi, dword [esp + edx*4 + 0x308]
add esi, esi
shr ecx, 0x1f
or esi, ecx
mov ecx, dword [esp + edx*4 + 0x30c]
add ecx, ecx
mov dword [esp + edx*4 + 0x308], esi
mov dword [esp + edx*4 + 0x30c], ecx
add edx, 4
cmp edx, eax
jbe 0x45abe9
mov esi, dword [esp + 0x158]
mov eax, dword [esp + edx*4 + 0x300]
mov ecx, dword [esp + edx*4 + 0x300]
shr eax, 0x1f
or dword [esp + edx*4 + 0x2fc], eax
add ecx, ecx
mov dword [esp + edx*4 + 0x300], ecx
add edx, 1
cmp edx, ebx
jbe 0x45ac6c
mov eax, dword [esp + ebx*4 + 0x300]
test eax, eax
jne 0x45aca2
add ebx, 0xffffffff
mov edx, dword [esp + 0xc8]
mov eax, edx
shr eax, 5
mov dword [esp + 0xc0], eax
and edx, 0x1f
mov dword [esp + 0x430], edx
xor ecx, ecx
cmp ecx, edx
adc ecx, 0
mov dword [esp + 0x84], ecx
lea eax, [eax + ecx]
cmp ebx, eax
jb 0x45ae42
mov edx, ecx
mov ebx, eax
test edx, edx
je 0x45acfc
mov ecx, dword [esp + 0x430]
neg ecx
add ecx, 0x1f
mov edx, 1
shl edx, cl
mov dword [esp + 0x340], edx
jmp 0x45ad0d
mov edx, dword [esp + eax*4 + 0x304]
shr edx, 0x1f
mov dword [esp + 0x340], edx
test eax, eax
je 0x45adea
mov edx, dword [esp + eax*4 + 0x300]
mov ecx, dword [esp + 0x340]
add edx, ecx
mov dword [esp + 0x430], edx
cmp edx, ecx
jae 0x45ad9a
mov ecx, dword [esp + 0x84]
mov dword [esp + eax*4 + 0x300], edx
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x300], 0
lea ebx, [eax + ecx - 1]
mov eax, dword [esp + ebx*4 + 0x300]
cmp eax, 0xffffffff
jne 0x45ad6f
mov eax, dword [esp + ebx*4 + 0x2fc]
add ebx, 0xffffffff
cmp eax, 0xffffffff
je 0x45ad60
test ebx, ebx
je 0x45ad82
add eax, 1
mov dword [esp + ebx*4 + 0x300], eax
jmp 0x45ae42
mov dword [esp + 0x304], 0x80000000
add esi, 1
mov ebx, 1
jmp 0x45ae42
mov edx, dword [esp + 0x84]
test edx, edx
je 0x45adc6
mov edx, ecx
lea ecx, [edx + edx - 1]
mov edx, dword [esp + 0x430]
not ecx
and edx, ecx
mov dword [esp + 0x430], edx
mov dword [esp + eax*4 + 0x300], edx
jmp 0x45add4
mov edx, dword [esp + 0x430]
mov dword [esp + eax*4 + 0x300], edx
mov eax, edx
test eax, eax
jne 0x45ae42
mov eax, dword [esp + ebx*4 + 0x2fc]
add ebx, 0xffffffff
test eax, eax
je 0x45adda
jmp 0x45ae42
mov eax, edx
mov ebx, eax
add esi, eax
shl eax, 0x1f
mov dword [esp + 0x304], eax
jmp 0x45ae42
movsx esi, word [ebp*2 + 0x4bc9c0]
mov ebx, ebp
shl ebx, 4
mov eax, dword [ebx + 0x4bc6ac]
mov edx, dword [ebx + 0x4bc6a8]
mov ecx, dword [ebx + 0x4bc6a4]
mov dword [esp + 0x304], eax
mov eax, dword [ebx + 0x4bc6a0]
mov ebx, 4
mov dword [esp + 0x308], edx
mov dword [esp + 0x30c], ecx
mov dword [esp + 0x310], eax
mov edx, dword [esp + 0x154]
sar edx, 1
add ebp, 0xffffffff
test ebp, ebp
jl 0x45ae66
mov eax, edx
neg eax
cmp edi, eax
jg 0x45ae49
mov dword [esp + 0x154], edx
jmp 0x45a895
mov dword [esp + 0x158], esi
mov esi, dword [esp + 0x428]
jmp 0x45b4a5
cmp eax, 0x216
jle 0x45b4a3
cmp eax, 0x1000
jge 0x45aeb1
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x158]
xor ebx, ebx
mov eax, 0x1000
mov ebp, 3
mov dword [esp + 0x154], eax
jmp 0x45b47f
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x158]
xor ebx, ebx
mov eax, 0x1000
mov ebp, 3
mov dword [esp + 0x154], eax
sub edi, dword [esp + 0x154]
test ebx, ebx
je 0x45b439
movsx edx, word [ebp*2 + 0x4bc9dc]
mov dword [esp + 0x90], edx
mov ecx, ebp
shl ecx, 4
lea edx, [ebx + 4]
mov eax, dword [ecx + 0x4bc82c]
mov dword [esp + 0x4c8], eax
mov eax, dword [ecx + 0x4bc828]
mov dword [esp + 0x4cc], eax
mov eax, dword [ecx + 0x4bc824]
mov dword [esp + 0x4d0], eax
mov eax, dword [ecx + 0x4bc820]
mov dword [esp + 0x4d4], eax
mov dword [esp + 0x84], edx
mov edx, dword [esp + ebx*4 + 0x300]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
lea ecx, [ebx + 3]
mov dword [esp + 0xc0], ecx
mov eax, dword [esp + 0x30]
mul dword [esp + 0x34]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0xc0]
mov dword [esp + eax*4 + 0xd8], edx
mov edx, dword [esp + 0x38]
mov dword [esp + eax*4 + 0xd4], edx
mov dword [esp + 0x158], esi
mov eax, 3
mov esi, eax
mov edx, dword [esp + ebx*4 + 0x300]
mov dword [esp + ecx*4 + 0x114], 0
mov dword [esp + 0x15c], edx
mov edx, dword [esp + esi*4 + 0x4c4]
mov dword [esp + 0x160], edx
mov eax, dword [esp + 0x15c]
mul dword [esp + 0x160]
mov dword [esp + 0x168], eax
mov dword [esp + 0x164], edx
mov edx, dword [esp + ecx*4 + 0xd4]
add edx, dword [esp + 0x168]
cmp edx, dword [esp + 0x168]
mov dword [esp + ecx*4 + 0xd4], edx
mov edx, 0
adc edx, 0
add ecx, 0xffffffff
add edx, dword [esp + 0x164]
mov dword [esp + ecx*4 + 0xd4], edx
add esi, 0xffffffff
jne 0x45af87
mov esi, dword [esp + 0x158]
mov dword [esp + ecx*4 + 0x114], 0
add ecx, 0xffffffff
test ecx, ecx
jl 0x45b089
cmp ecx, 6
jl 0x45b072
xor eax, eax
mov dword [esp + ecx*4 + 0x114], eax
mov dword [esp + ecx*4 + 0xd4], eax
mov dword [esp + ecx*4 + 0x110], eax
mov dword [esp + ecx*4 + 0xd0], eax
mov dword [esp + ecx*4 + 0x10c], eax
mov dword [esp + ecx*4 + 0xcc], eax
mov dword [esp + ecx*4 + 0x108], eax
mov dword [esp + ecx*4 + 0xc8], eax
mov dword [esp + ecx*4 + 0x104], eax
mov dword [esp + ecx*4 + 0xc4], eax
add ecx, 0xfffffffb
cmp ecx, 6
jge 0x45b022
xor eax, eax
mov dword [esp + ecx*4 + 0x114], eax
mov dword [esp + ecx*4 + 0xd4], eax
add ecx, 0xffffffff
test ecx, ecx
jge 0x45b072
add ebx, 0xffffffff
je 0x45b173
mov dword [esp + 0x340], ebp
mov eax, ebx
mov dword [esp + 0xc4], edi
mov dword [esp + 0x158], esi
shl eax, 2
mov dword [esp + 0x504], eax
mov ebp, 0x10
lea ecx, [eax + 0x10]
mov eax, dword [esp + ebx*4 + 0x300]
mov edx, dword [esp + ebp + 0x4c4]
mov dword [esp + 0x630], eax
mov dword [esp + 0x634], edx
mov eax, dword [esp + 0x630]
mul dword [esp + 0x634]
mov dword [esp + 0x63c], eax
mov dword [esp + 0x638], edx
mov eax, dword [esp + ecx + 0xd4]
add eax, dword [esp + 0x63c]
cmp eax, dword [esp + 0x63c]
mov edx, dword [esp + ecx + 0xd0]
mov dword [esp + ecx + 0xd4], eax
mov esi, 0
adc esi, 0
mov edi, 0
add esi, dword [esp + 0x638]
add edx, esi
cmp edx, esi
adc edi, 0
mov dword [esp + ecx + 0xd0], edx
add dword [esp + ecx + 0x10c], edi
add ecx, 0xfffffffc
add ebp, 0xfffffffc
jne 0x45b0bb
mov eax, dword [esp + 0x504]
add eax, 0xfffffffc
add ebx, 0xffffffff
jne 0x45b0ac
mov ebp, dword [esp + 0x340]
mov edi, dword [esp + 0xc4]
mov esi, dword [esp + 0x158]
add esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x84]
mov edx, dword [esp + ebx*4 + 0xd4]
mov eax, dword [esp + 0xc0]
mov dword [esp + ebx*4 + 0x300], edx
test eax, eax
je 0x45b1d5
mov edx, ebx
xor eax, eax
lea edx, [edx - 1]
add eax, dword [esp + edx*4 + 0x114]
mov ecx, dword [esp + edx*4 + 0xd4]
add ecx, eax
cmp ecx, eax
mov dword [esp + edx*4 + 0x300], ecx
mov eax, 0
adc eax, 0
add edx, 0xffffffff
jne 0x45b1a1
mov eax, dword [esp + 0x84]
mov edx, dword [esp + eax*4 + 0x300]
test edx, edx
jne 0x45b1e7
add ebx, 0xffffffff
mov eax, dword [esp + ebx*4 + 0x300]
test eax, eax
je 0x45b1d9
mov eax, dword [esp + 0x304]
test eax, eax
jle 0x45b2d1
add eax, eax
mov dword [esp + 0x304], eax
add esi, 0xffffffff
cmp ebx, 2
jb 0x45b2d1
lea eax, [ebx - 2]
cmp eax, 5
jb 0x45c4da
mov dword [esp + 0x158], esi
mov edx, 2
lea eax, [ebx - 5]
mov ecx, dword [esp + edx*4 + 0x300]
mov esi, dword [esp + edx*4 + 0x304]
shr ecx, 0x1f
shr esi, 0x1f
or dword [esp + edx*4 + 0x2fc], ecx
mov ecx, dword [esp + edx*4 + 0x300]
add ecx, ecx
or ecx, esi
mov esi, dword [esp + edx*4 + 0x304]
mov dword [esp + edx*4 + 0x300], ecx
mov ecx, dword [esp + edx*4 + 0x308]
add esi, esi
shr ecx, 0x1f
or esi, ecx
mov ecx, dword [esp + edx*4 + 0x30c]
mov dword [esp + edx*4 + 0x304], esi
mov esi, dword [esp + edx*4 + 0x308]
add esi, esi
shr ecx, 0x1f
or esi, ecx
mov ecx, dword [esp + edx*4 + 0x30c]
add ecx, ecx
mov dword [esp + edx*4 + 0x308], esi
mov dword [esp + edx*4 + 0x30c], ecx
add edx, 4
cmp edx, eax
jbe 0x45b226
mov esi, dword [esp + 0x158]
mov eax, dword [esp + edx*4 + 0x300]
mov ecx, dword [esp + edx*4 + 0x300]
shr eax, 0x1f
or dword [esp + edx*4 + 0x2fc], eax
add ecx, ecx
mov dword [esp + edx*4 + 0x300], ecx
add edx, 1
cmp edx, ebx
jbe 0x45b2a9
mov eax, dword [esp + ebx*4 + 0x300]
test eax, eax
jne 0x45b2df
add ebx, 0xffffffff
mov edx, dword [esp + 0xc8]
mov eax, edx
shr eax, 5
mov dword [esp + 0xc0], eax
and edx, 0x1f
mov dword [esp + 0x430], edx
xor ecx, ecx
cmp ecx, edx
adc ecx, 0
mov dword [esp + 0x84], ecx
lea eax, [eax + ecx]
cmp ebx, eax
jb 0x45b47f
mov edx, ecx
mov ebx, eax
test edx, edx
je 0x45b339
mov ecx, dword [esp + 0x430]
neg ecx
add ecx, 0x1f
mov edx, 1
shl edx, cl
mov dword [esp + 0x504], edx
jmp 0x45b34a
mov edx, dword [esp + eax*4 + 0x304]
shr edx, 0x1f
mov dword [esp + 0x504], edx
test eax, eax
je 0x45b427
mov edx, dword [esp + eax*4 + 0x300]
mov ecx, dword [esp + 0x504]
add edx, ecx
mov dword [esp + 0x430], edx
cmp edx, ecx
jae 0x45b3d7
mov ecx, dword [esp + 0x84]
mov dword [esp + eax*4 + 0x300], edx
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x300], 0
lea ebx, [eax + ecx - 1]
mov eax, dword [esp + ebx*4 + 0x300]
cmp eax, 0xffffffff
jne 0x45b3ac
mov eax, dword [esp + ebx*4 + 0x2fc]
add ebx, 0xffffffff
cmp eax, 0xffffffff
je 0x45b39d
test ebx, ebx
je 0x45b3bf
add eax, 1
mov dword [esp + ebx*4 + 0x300], eax
jmp 0x45b47f
mov dword [esp + 0x304], 0x80000000
add esi, 1
mov ebx, 1
jmp 0x45b47f
mov edx, dword [esp + 0x84]
test edx, edx
je 0x45b403
mov edx, ecx
lea ecx, [edx + edx - 1]
mov edx, dword [esp + 0x430]
not ecx
and edx, ecx
mov dword [esp + 0x430], edx
mov dword [esp + eax*4 + 0x300], edx
jmp 0x45b411
mov edx, dword [esp + 0x430]
mov dword [esp + eax*4 + 0x300], edx
mov eax, edx
test eax, eax
jne 0x45b47f
mov eax, dword [esp + ebx*4 + 0x2fc]
add ebx, 0xffffffff
test eax, eax
je 0x45b417
jmp 0x45b47f
mov eax, edx
mov ebx, eax
add esi, eax
shl eax, 0x1f
mov dword [esp + 0x304], eax
jmp 0x45b47f
movsx esi, word [ebp*2 + 0x4bc9dc]
mov ebx, ebp
shl ebx, 4
mov eax, dword [ebx + 0x4bc82c]
mov edx, dword [ebx + 0x4bc828]
mov ecx, dword [ebx + 0x4bc824]
mov dword [esp + 0x304], eax
mov eax, dword [ebx + 0x4bc820]
mov ebx, 4
mov dword [esp + 0x308], edx
mov dword [esp + 0x30c], ecx
mov dword [esp + 0x310], eax
mov eax, dword [esp + 0x154]
sar eax, 1
add ebp, 0xffffffff
test ebp, ebp
jl 0x45ae66
cmp edi, eax
jl 0x45b486
mov dword [esp + 0x154], eax
jmp 0x45aed2
xor ebx, ebx
cmp edi, 0xffffffe5
jl 0x45ba38
test edi, edi
jge 0x45b9b1
movsx eax, word [edi*2 + 0x4bc9be]
mov dword [esp + 0x154], eax
shl edi, 4
mov edx, dword [edi + 0x4bc69c]
mov ecx, dword [edi + 0x4bc698]
mov ebp, dword [edi + 0x4bc694]
mov edi, dword [edi + 0x4bc690]
mov dword [esp + 0x5e4], edx
test edi, edi
mov dword [esp + 0x5e8], ecx
mov dword [esp + 0x5ec], ebp
mov dword [esp + 0x5f0], edi
jne 0x45c945
mov edi, 4
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45b509
test ebx, ebx
je 0x45b74f
mov dword [esp + 0x6c], eax
mov eax, dword [esp + ebx*4 + 0x300]
mov dword [esp + 0x68], eax
lea ecx, [ebx + edi]
mov dword [esp + 0x84], ecx
lea ecx, [ebx + edi - 1]
mov eax, dword [esp + 0x6c]
mul dword [esp + 0x68]
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x60]
mov eax, ecx
shl eax, 2
mov dword [esp + eax + 0x2c4], edx
mov edx, ebx
add edx, 0xffffffff
mov dword [esp + eax + 0x2c0], ebp
je 0x45b5fb
lea ebp, [ebx - 1]
mov eax, dword [esp + edi*4 + 0x5e0]
mov edx, dword [esp + ebp*4 + 0x300]
mov dword [esp + ecx*4 + 0x280], 0
mov dword [esp + 0x354], eax
mov dword [esp + 0x358], edx
mov eax, dword [esp + 0x354]
mul dword [esp + 0x358]
mov dword [esp + 0x360], eax
mov dword [esp + 0x35c], edx
mov eax, dword [esp + ecx*4 + 0x2c0]
add eax, dword [esp + 0x360]
cmp eax, dword [esp + 0x360]
mov dword [esp + ecx*4 + 0x2c0], eax
mov edx, 0
adc edx, 0
add ecx, 0xffffffff
mov eax, ecx
shl eax, 2
add edx, dword [esp + 0x35c]
mov dword [esp + eax + 0x2c0], edx
add ebp, 0xffffffff
jne 0x45b575
mov dword [esp + eax + 0x280], 0
add ecx, 0xffffffff
test ecx, ecx
jl 0x45b679
cmp ecx, 6
jl 0x45b662
xor eax, eax
mov dword [esp + ecx*4 + 0x280], eax
mov dword [esp + ecx*4 + 0x2c0], eax
mov dword [esp + ecx*4 + 0x27c], eax
mov dword [esp + ecx*4 + 0x2bc], eax
mov dword [esp + ecx*4 + 0x278], eax
mov dword [esp + ecx*4 + 0x2b8], eax
mov dword [esp + ecx*4 + 0x274], eax
mov dword [esp + ecx*4 + 0x2b4], eax
mov dword [esp + ecx*4 + 0x270], eax
mov dword [esp + ecx*4 + 0x2b0], eax
add ecx, 0xfffffffb
cmp ecx, 6
jge 0x45b612
xor eax, eax
mov dword [esp + ecx*4 + 0x280], eax
mov dword [esp + ecx*4 + 0x2c0], eax
add ecx, 0xffffffff
test ecx, ecx
jge 0x45b662
add edi, 0xffffffff
je 0x45c4eb
mov dword [esp + 0x428], esi
mov esi, ebx
test ebx, ebx
je 0x45c76e
mov dword [esp + 0x42c], ebx
mov eax, edi
shl eax, 2
mov ebp, esi
shl ebp, 2
lea ecx, [eax + esi*4]
mov eax, dword [esp + edi*4 + 0x5e0]
mov edx, dword [esp + ebp + 0x300]
mov dword [esp + 0x660], eax
mov dword [esp + 0x664], edx
mov eax, dword [esp + 0x660]
mul dword [esp + 0x664]
mov dword [esp + 0x66c], eax
mov dword [esp + 0x668], edx
mov eax, dword [esp + ecx + 0x2c0]
add eax, dword [esp + 0x66c]
cmp eax, dword [esp + 0x66c]
mov edx, dword [esp + ecx + 0x2bc]
mov dword [esp + ecx + 0x2c0], eax
mov ebx, 0
adc ebx, 0
mov eax, 0
add ebp, 0xfffffffc
add ebx, dword [esp + 0x668]
add edx, ebx
cmp edx, ebx
adc eax, 0
mov dword [esp + ecx + 0x2bc], edx
add dword [esp + ecx + 0x278], eax
add ecx, 0xfffffffc
add esi, 0xffffffff
jne 0x45b6a7
mov ebx, dword [esp + 0x42c]
add edi, 0xffffffff
jne 0x45b689
jmp 0x45c4e4
mov edx, dword [esp + 0xa8]
mov ebx, dword [esp + edx*4 + 0x520]
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], eax
lea ecx, [edi + edx]
mov dword [esp + 0x504], ecx
lea ecx, [edi + edx - 1]
mov dword [esp + 0x340], ecx
mov eax, dword [esp + 0x94]
mul dword [esp + 0x98]
mov dword [esp + 0xa0], eax
mov dword [esp + 0x9c], edx
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0x340]
mov edx, dword [esp + 0x9c]
mov ebp, edi
add ebp, 0xffffffff
mov dword [esp + ebx*4 + 0x5a4], eax
mov dword [esp + ebx*4 + 0x5a0], edx
je 0x45c93b
mov ebp, dword [esp + 0xa8]
lea ebx, [edi - 1]
mov eax, dword [esp + ebp*4 + 0x520]
mov edx, dword [esp + ebx*4 + 0x5e0]
mov dword [esp + ecx*4 + 0x560], 0
mov dword [esp + 0x620], eax
mov dword [esp + 0x624], edx
mov eax, dword [esp + 0x620]
mul dword [esp + 0x624]
mov dword [esp + 0x62c], eax
mov dword [esp + 0x628], edx
mov eax, dword [esp + ecx*4 + 0x5a0]
add eax, dword [esp + 0x62c]
cmp eax, dword [esp + 0x62c]
mov dword [esp + ecx*4 + 0x5a0], eax
mov edx, 0
adc edx, 0
add ecx, 0xffffffff
mov eax, ecx
shl eax, 2
add edx, dword [esp + 0x628]
mov dword [esp + eax + 0x5a0], edx
add ebx, 0xffffffff
jne 0x45b7d4
mov dword [esp + eax + 0x560], 0
add ecx, 0xffffffff
test ecx, ecx
jl 0x45b8d8
cmp ecx, 6
jl 0x45b8c1
xor eax, eax
mov dword [esp + ecx*4 + 0x560], eax
mov dword [esp + ecx*4 + 0x5a0], eax
mov dword [esp + ecx*4 + 0x55c], eax
mov dword [esp + ecx*4 + 0x59c], eax
mov dword [esp + ecx*4 + 0x558], eax
mov dword [esp + ecx*4 + 0x598], eax
mov dword [esp + ecx*4 + 0x554], eax
mov dword [esp + ecx*4 + 0x594], eax
mov dword [esp + ecx*4 + 0x550], eax
mov dword [esp + ecx*4 + 0x590], eax
add ecx, 0xfffffffb
cmp ecx, 6
jge 0x45b871
xor eax, eax
mov dword [esp + ecx*4 + 0x560], eax
mov dword [esp + ecx*4 + 0x5a0], eax
add ecx, 0xffffffff
test ecx, ecx
jge 0x45b8c1
mov eax, dword [esp + 0x16c]
lea esi, [esi + eax - 1]
test esi, esi
je 0x45c783
mov ebp, edi
test edi, edi
je 0x45c92d
mov dword [esp + 0xc4], edi
mov eax, esi
shl eax, 2
mov ebx, ebp
shl ebx, 2
lea ecx, [eax + ebp*4]
mov eax, dword [esp + esi*4 + 0x520]
mov edx, dword [esp + ebx + 0x5e0]
mov dword [esp + 0x69c], eax
mov dword [esp + 0x698], edx
mov eax, dword [esp + 0x69c]
mul dword [esp + 0x698]
mov dword [esp + 0x690], eax
mov dword [esp + 0x694], edx
mov eax, dword [esp + ecx + 0x5a0]
add eax, dword [esp + 0x690]
cmp eax, dword [esp + 0x690]
mov edx, dword [esp + ecx + 0x59c]
mov dword [esp + ecx + 0x5a0], eax
mov edi, 0
adc edi, 0
mov eax, 0
add ebx, 0xfffffffc
add edi, dword [esp + 0x694]
add edx, edi
cmp edx, edi
adc eax, 0
mov dword [esp + ecx + 0x59c], edx
add dword [esp + ecx + 0x558], eax
add ecx, 0xfffffffc
add ebp, 0xffffffff
jne 0x45b909
mov edi, dword [esp + 0xc4]
add esi, 0xffffffff
jne 0x45b8eb
jmp 0x45c783
jl 0x45ba38
cmp edi, 0x37
jl 0x45ba34
mov edx, edi
sar edx, 3
lea ecx, [edx + edx]
movzx eax, word [ecx + 0x4bc902]
shr eax, 5
cmp eax, edi
jg 0x45b9d6
lea ecx, [edx + edx + 2]
movzx edx, word [ecx + 0x4bc900]
mov eax, edx
and eax, 0x1f
movsx ecx, word [eax*2 + 0x4bc9e4]
shr edx, 5
sub edi, edx
mov dword [esp + 0x90], ecx
shl eax, 4
mov ebp, dword [eax + 0x4bc86c]
mov edx, dword [eax + 0x4bc868]
mov dword [esp + 0x4c8], ebp
mov dword [esp + 0x4cc], edx
mov edx, dword [eax + 0x4bc864]
mov eax, dword [eax + 0x4bc860]
mov dword [esp + 0x4d0], edx
mov dword [esp + 0x4d4], eax
mov ebp, 4
jmp 0x45baaf
xor ebp, ebp
jmp 0x45baaf
mov edx, edi
neg edx
mov ecx, edx
sar ecx, 3
movzx eax, word [ecx*2 + 0x4bc780]
mov ebp, eax
shr ebp, 5
cmp ebp, edx
jge 0x45ba5f
movzx eax, word [ecx*2 + 0x4bc782]
mov ebp, eax
shr ebp, 5
and eax, 0x1f
movsx edx, word [eax*2 + 0x4bc9c8]
mov dword [esp + 0x90], edx
add edi, ebp
shl eax, 4
mov ecx, dword [eax + 0x4bc6ec]
mov ebp, dword [eax + 0x4bc6e8]
mov edx, dword [eax + 0x4bc6e4]
mov eax, dword [eax + 0x4bc6e0]
mov dword [esp + 0x4c8], ecx
mov dword [esp + 0x4cc], ebp
mov dword [esp + 0x4d0], edx
mov ebp, 4
mov dword [esp + 0x4d4], eax
cmp edi, 0x37
je 0x45d25f
lea edx, [edi - 0x1b]
test edx, edx
jle 0x45bb18
movsx eax, word [edx*2 + 0x4bcd5e]
mov ecx, dword [edx*8 + 0x4bcb7c]
mov edi, dword [edx*8 + 0x4bcb78]
mov dword [esp + 0x80], eax
test edi, edi
mov dword [esp + 0x368], ecx
mov dword [esp + 0x36c], edi
jne 0x45d249
mov eax, 2
mov dword [esp + 0x424], eax
add eax, 0xffffffff
mov ecx, dword [esp + eax*4 + 0x364]
test ecx, ecx
je 0x45bafe
mov dword [esp + 0x424], eax
mov edi, 0x1b
movsx eax, word [edi*2 + 0x4bcd5e]
mov ecx, dword [edi*8 + 0x4bcb7c]
mov edi, dword [edi*8 + 0x4bcb78]
mov dword [esp + 0x154], eax
test edi, edi
mov dword [esp + 0x5e4], ecx
mov dword [esp + 0x5e8], edi
jne 0x45d238
mov edi, 2
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45bb50
test edx, edx
jle 0x45cc43
mov edx, dword [esp + 0x424]
mov dword [esp + 0x70], eax
mov eax, dword [esp + edx*4 + 0x364]
lea ecx, [edx + edi]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x74], eax
lea ecx, [edx + edi - 1]
mov dword [esp + 0x84], ecx
mov eax, dword [esp + 0x70]
mul dword [esp + 0x74]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x84]
mov dword [esp + eax*4 + 0x3a8], edx
mov edx, dword [esp + 0x78]
mov dword [esp + eax*4 + 0x3a4], edx
mov eax, dword [esp + 0x424]
add eax, 0xffffffff
je 0x45d229
mov eax, dword [esp + 0x424]
mov dword [esp + 0x428], esi
lea eax, [eax - 1]
mov esi, eax
mov edx, dword [esp + edi*4 + 0x5e0]
mov dword [esp + ecx*4 + 0x3e4], 0
mov dword [esp + 0x434], edx
mov edx, dword [esp + esi*4 + 0x364]
mov dword [esp + 0x438], edx
mov eax, dword [esp + 0x434]
mul dword [esp + 0x438]
mov dword [esp + 0x440], eax
mov dword [esp + 0x43c], edx
mov edx, dword [esp + ecx*4 + 0x3a4]
add edx, dword [esp + 0x440]
cmp edx, dword [esp + 0x440]
mov dword [esp + ecx*4 + 0x3a4], edx
mov edx, 0
adc edx, 0
add ecx, 0xffffffff
mov eax, ecx
shl eax, 2
add edx, dword [esp + 0x43c]
mov dword [esp + eax + 0x3a4], edx
add esi, 0xffffffff
jne 0x45bbe1
mov esi, dword [esp + 0x428]
mov dword [esp + eax + 0x3e4], 0
add ecx, 0xffffffff
test ecx, ecx
jl 0x45bcec
cmp ecx, 6
jl 0x45bcd5
xor eax, eax
mov dword [esp + ecx*4 + 0x3e4], eax
mov dword [esp + ecx*4 + 0x3a4], eax
mov dword [esp + ecx*4 + 0x3e0], eax
mov dword [esp + ecx*4 + 0x3a0], eax
mov dword [esp + ecx*4 + 0x3dc], eax
mov dword [esp + ecx*4 + 0x39c], eax
mov dword [esp + ecx*4 + 0x3d8], eax
mov dword [esp + ecx*4 + 0x398], eax
mov dword [esp + ecx*4 + 0x3d4], eax
mov dword [esp + ecx*4 + 0x394], eax
add ecx, 0xfffffffb
cmp ecx, 6
jge 0x45bc85
xor eax, eax
mov dword [esp + ecx*4 + 0x3e4], eax
mov dword [esp + ecx*4 + 0x3a4], eax
add ecx, 0xffffffff
test ecx, ecx
jge 0x45bcd5
add edi, 0xffffffff
je 0x45c972
mov edx, dword [esp + 0x424]
mov dword [esp + 0x430], ebp
mov dword [esp + 0x42c], ebx
mov dword [esp + 0x428], esi
mov ebp, edx
test edx, edx
je 0x45d1ff
mov dword [esp + 0x424], edx
mov eax, edi
shl eax, 2
mov ebx, ebp
shl ebx, 2
lea ecx, [eax + ebp*4]
mov eax, dword [esp + edi*4 + 0x5e0]
mov edx, dword [esp + ebx + 0x364]
mov dword [esp + 0x670], eax
mov dword [esp + 0x674], edx
mov eax, dword [esp + 0x670]
mul dword [esp + 0x674]
mov dword [esp + 0x67c], eax
mov dword [esp + 0x678], edx
mov eax, dword [esp + ecx + 0x3a4]
add eax, dword [esp + 0x67c]
cmp eax, dword [esp + 0x67c]
mov edx, dword [esp + ecx + 0x3a0]
mov dword [esp + ecx + 0x3a4], eax
mov esi, 0
adc esi, 0
mov eax, 0
add ebx, 0xfffffffc
add esi, dword [esp + 0x678]
add edx, esi
cmp edx, esi
adc eax, 0
mov dword [esp + ecx + 0x3a0], edx
add dword [esp + ecx + 0x3dc], eax
add ecx, 0xfffffffc
add ebp, 0xffffffff
jne 0x45bd2f
mov edx, dword [esp + 0x424]
add edi, 0xffffffff
jne 0x45bd11
jmp 0x45c956
shl ebp, 0x10
mov ecx, esi
shr ecx, 0x10
or ebp, ecx
shl esi, 0x10
mov ebx, edx
shr ebx, 0x10
or esi, ebx
shl edx, 0x10
mov edi, eax
shr edi, 0x10
or edx, edi
shl eax, 0x10
test ebp, ebp
jne 0x45d2b6
mov ecx, dword [esp + 0xcc]
jmp 0x45be0b
xor eax, eax
mov ebp, esi
mov esi, edx
mov edx, eax
add ecx, 0xffffffe0
test ebp, ebp
je 0x45be09
jmp 0x45d2aa
mov dword [esp + 0xc8], ecx
mov dword [esp + 0x428], esi
mov ecx, 0
mov dword [esp + 0xa8], ecx
jle 0x4595b0
xor ecx, ecx
mov dword [esp + 0xcc], ecx
add edx, edx
add ecx, 1
test edx, edx
jg 0x45be46
mov dword [esp + 0xcc], ecx
test ecx, ecx
je 0x4595b0
mov dword [esp + 0x14], ebx
mov ebx, ecx
sub eax, ebx
mov dword [esp + 0x430], eax
mov eax, dword [esp + 0xc8]
mov ecx, ebx
neg ecx
mov dword [esp + 0x42c], ecx
mov esi, eax
shr esi, cl
mov ecx, ebx
shl eax, cl
mov ecx, dword [esp + 0x42c]
or edx, esi
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x504], edx
mov edx, dword [esp + 0x428]
mov edi, edx
shr edi, cl
mov ecx, ebx
shl edx, cl
or eax, edi
mov ecx, dword [esp + 0x42c]
mov dword [esp + 0xc8], eax
mov eax, esi
shr eax, cl
mov ecx, ebx
shl esi, cl
mov ebx, dword [esp + 0x14]
mov dword [esp + 0xa8], esi
or edx, eax
mov eax, dword [esp + 0x430]
mov dword [esp + 0x428], edx
mov edx, dword [esp + 0x504]
jmp 0x4595b0
mov edx, dword [esp + 0x428]
mov dword [esp + 0x154], ebp
mov ebp, dword [esp + 0xc]
jmp 0x459a2c
mov ecx, dword [esp + 0x1c]
add dword [ecx], ebx
add edx, 0xffffffff
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x459b98
mov ebx, dword [esp + 0xb0]
mov ecx, dword [esp + 0x2c]
add ebx, 1
cmp ecx, ebx
jge 0x45bf2c
mov ebx, ecx
mov dword [esp + 0xb0], ebx
jmp 0x459b98
xor ebx, ebx
mov dword [esp + 0xcc], ebx
jmp 0x459a96
xor ecx, ecx
mov dword [esp + 0xcc], ecx
jmp 0x459ab9
xor ecx, ecx
mov dword [esp + 0x154], ecx
mov ecx, 1
jmp 0x459a2e
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xa4]
cmp eax, edi
jl 0x45bf7c
mov eax, edi
mov edi, ecx
sar edi, 1
shr edi, 0x1e
add edi, ecx
sar edi, 2
add edi, eax
shl eax, 2
mov dword [esp + 0xb0], edi
neg eax
mov dword [esp + 0xcc], eax
cmp ecx, eax
jge 0x45bfa7
mov eax, edi
test eax, eax
jl 0x45bfb7
mov dword [esp + 0x520], 0
jmp 0x459866
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb4]
add dword [esp + 0xcc], 4
lea ecx, [eax*8 + 4]
shr edx, cl
test dl, 1
je 0x459478
mov eax, dword [esp + 0xb8]
lea eax, [eax + 1]
mov edx, dword [esp + 0xb8]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0x1c]
mov byte [edx], 0x31
mov dword [ebx], ecx
xor ecx, ecx
jmp 0x459be0
mov eax, dword [esp + 0xb8]
lea eax, [eax + 1]
jmp 0x4594c7
mov dword [esp + 0xa4], edi
mov dword [esp + 0x428], ecx
mov edx, 0
mov dword [esp + 0xc8], edx
jle 0x45976e
xor edx, edx
mov dword [esp + 0xcc], edx
add esi, esi
add edx, 1
test esi, esi
jg 0x45c03f
mov dword [esp + 0xcc], edx
test edx, edx
je 0x45976e
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0xa4]
sub ebx, edx
mov ecx, edx
mov dword [esp + 0xa4], ebx
neg ecx
mov dword [esp + 0x430], ecx
mov edi, eax
shr edi, cl
mov ecx, edx
shl eax, cl
or esi, edi
mov ecx, dword [esp + 0x430]
mov dword [esp + 0x42c], esi
mov esi, dword [esp + 0x428]
mov ebx, esi
shr ebx, cl
mov ecx, edx
shl esi, cl
or eax, ebx
mov ecx, dword [esp + 0x430]
mov ebx, dword [esp + 0xc8]
mov dword [esp + 0x504], eax
mov eax, ebx
shr eax, cl
mov ecx, edx
shl ebx, cl
or esi, eax
mov eax, dword [esp + 0x504]
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x42c]
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp + 0x14]
jmp 0x45976e
mov eax, dword [esp + 0x14]
test al, 2
jne 0x45c10f
test al, 0x41
je 0x45c0f5
mov eax, ecx
test eax, eax
jl 0x45c10f
mov eax, dword [esp + 0x14]
test al, 0x14
jne 0x45c118
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xa4]
mov dword [edx], eax
jmp 0x459d80
mov ebp, dword [esp + 0xc]
jmp 0x459478
mov eax, dword [esp + 0xbc]
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 0xac]
mov esi, dword [esp + 0xb4]
lea ecx, [ebx*8 + 4]
shr esi, cl
test esi, 1
je 0x459478
mov ebp, edx
mov esi, ebp
neg esi
xor ecx, ecx
test ebp, ebp
sete cl
add ecx, esi
mov dword [esp + 0xcc], ecx
jmp 0x45bfe9
mov eax, dword [esp + 0xbc]
jmp 0x4594c7
mov eax, dword [esp + 0x16c]
mov esi, dword [esp + 0x340]
mov edx, dword [esp + 0x428]
mov ebp, dword [esp + 0xc]
mov ecx, 0x39
mov ebx, 1
mov dword [esp + 0x424], ecx
mov dword [esp + 0x158], ebx
jmp 0x459b2d
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x16c]
mov edx, dword [esp + 0x428]
mov ebp, dword [esp + 0xc]
add ecx, 1
mov esi, dword [esp + 0xb4]
shr esi, cl
mov ebx, 0x39
mov dword [esp + 0x424], ebx
and esi, 1
mov edi, 1
mov dword [esp + 0x158], edi
mov ebx, 1
jmp 0x459b2d
mov esi, dword [esp + 0x520]
xor ebx, ebx
jmp 0x45a00a
mov ebp, 0
jle 0x459de5
xor edx, edx
mov dword [esp + 0x504], edx
add edi, edi
add edx, 1
test edi, edi
jg 0x45c20f
mov dword [esp + 0x504], edx
test edx, edx
je 0x459de5
sub ebx, edx
mov dword [esp + 0xcc], ebx
mov ecx, edx
neg ecx
mov ebx, eax
mov dword [esp + 0x430], ecx
shr ebx, cl
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 0x430]
or edi, ebx
mov ebx, esi
shr ebx, cl
mov ecx, edx
shl esi, cl
or eax, ebx
mov ecx, dword [esp + 0x430]
mov ebx, ebp
shr ebx, cl
mov ecx, edx
shl ebp, cl
or esi, ebx
mov ebx, dword [esp + 0xcc]
jmp 0x459de5
mov eax, dword [esp + 0x5e8]
mov edi, 2
jmp 0x45b74f
mov edi, eax
mov eax, dword [esp + 0x5e4]
test eax, eax
jle 0x45c375
add dword [esp + 0x154], 0xffffffff
add eax, eax
cmp edi, 2
mov dword [esp + 0x5e4], eax
jb 0x45c4b3
lea eax, [edi - 2]
cmp eax, 5
jb 0x45c4a9
mov edx, 2
lea eax, [edi - 5]
mov ebx, dword [esp + edx*4 + 0x5e0]
mov ebp, dword [esp + edx*4 + 0x5e4]
shr ebx, 0x1f
shr ebp, 0x1f
or dword [esp + edx*4 + 0x5dc], ebx
mov ebx, dword [esp + edx*4 + 0x5e0]
add ebx, ebx
or ebx, ebp
mov ebp, dword [esp + edx*4 + 0x5e4]
mov dword [esp + edx*4 + 0x5e0], ebx
mov ebx, dword [esp + edx*4 + 0x5e8]
add ebp, ebp
shr ebx, 0x1f
or ebp, ebx
mov ebx, dword [esp + edx*4 + 0x5ec]
mov dword [esp + edx*4 + 0x5e4], ebp
mov ebp, dword [esp + edx*4 + 0x5e8]
add ebp, ebp
shr ebx, 0x1f
or ebp, ebx
mov ebx, dword [esp + edx*4 + 0x5ec]
add ebx, ebx
mov dword [esp + edx*4 + 0x5e8], ebp
mov dword [esp + edx*4 + 0x5ec], ebx
add edx, 4
cmp edx, eax
jbe 0x45c2c3
mov eax, dword [esp + edx*4 + 0x5e0]
mov ebx, dword [esp + edx*4 + 0x5e0]
shr eax, 0x1f
or dword [esp + edx*4 + 0x5dc], eax
add ebx, ebx
mov dword [esp + edx*4 + 0x5e0], ebx
add edx, 1
cmp edx, edi
jbe 0x45c33f
mov eax, dword [esp + ecx + 0x5e0]
test eax, eax
jne 0x45c375
add edi, 0xffffffff
mov ecx, dword [esp + 0xc8]
mov ebp, ecx
shr ebp, 5
and ecx, 0x1f
xor ebx, ebx
cmp ebx, ecx
adc ebx, 0
lea edx, [ebp + ebx]
cmp edi, edx
jb 0x45c49d
mov edi, edx
test ebx, ebx
je 0x45c3b2
neg ecx
add ecx, 0x1f
mov eax, 1
shl eax, cl
mov dword [esp + 0x504], eax
jmp 0x45c3c3
mov eax, dword [esp + edx*4 + 0x5e4]
shr eax, 0x1f
mov dword [esp + 0x504], eax
test edx, edx
je 0x45c47c
mov eax, dword [esp + edx*4 + 0x5e0]
mov ecx, dword [esp + 0x504]
add eax, ecx
cmp eax, ecx
jae 0x45c445
mov dword [esp + edx*4 + 0x5e0], eax
mov dword [esp + 0x5e0], 0
lea edi, [ebp + ebx - 1]
mov eax, dword [esp + edi*4 + 0x5e0]
cmp eax, 0xffffffff
jne 0x45c410
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
cmp eax, 0xffffffff
je 0x45c401
test edi, edi
je 0x45c423
add eax, 1
mov dword [esp + edi*4 + 0x5e0], eax
jmp 0x45b74f
add dword [esp + 0x154], 1
mov edi, 1
mov eax, 0x80000000
mov dword [esp + 0x5e4], 0x80000000
jmp 0x45b74f
test ebx, ebx
je 0x45c45a
lea ebx, [ecx + ecx - 1]
not ebx
and eax, ebx
mov dword [esp + edx*4 + 0x5e0], eax
jmp 0x45c461
mov dword [esp + edx*4 + 0x5e0], eax
test eax, eax
jne 0x45b74f
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45c469
jmp 0x45b74f
mov edi, eax
add dword [esp + 0x154], edi
mov eax, edi
shl eax, 0x1f
mov dword [esp + 0x5e4], eax
mov eax, dword [esp + edi*4 + 0x5e0]
jmp 0x45b74f
mov eax, dword [esp + edi*4 + 0x5e0]
jmp 0x45b74f
mov edx, 2
jmp 0x45c33f
mov eax, dword [esp + ecx + 0x5e0]
jmp 0x45c36e
mov eax, dword [esp + 0x5e8]
mov ebp, 2
jmp 0x45a59c
mov edx, 2
jmp 0x45ac6c
mov edx, 2
jmp 0x45b2a9
mov esi, dword [esp + 0x428]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x154]
add ecx, dword [esp + 0x158]
mov edi, eax
mov dword [esp + 0x154], ecx
mov ecx, eax
shl ecx, 2
mov edx, dword [esp + ecx + 0x2c0]
add eax, 0xffffffff
mov dword [esp + ecx + 0x5e0], edx
mov dword [esp + 0x84], eax
je 0x45c557
xor edx, edx
add edx, dword [esp + eax*4 + 0x280]
mov ebx, dword [esp + eax*4 + 0x2c0]
add ebx, edx
cmp ebx, edx
mov dword [esp + eax*4 + 0x5e0], ebx
mov edx, 0
adc edx, 0
add eax, 0xffffffff
jne 0x45c52a
mov edx, dword [esp + ecx + 0x5e0]
test edx, edx
jne 0x45c580
mov eax, dword [esp + 0x84]
jmp 0x45c567
add eax, 0xffffffff
mov ecx, eax
shl ecx, 2
mov edx, dword [esp + ecx + 0x5e0]
test edx, edx
je 0x45c564
mov dword [esp + 0x84], eax
mov edi, eax
mov eax, dword [esp + 0x5e4]
test eax, eax
jle 0x45c66f
add dword [esp + 0x154], 0xffffffff
add eax, eax
cmp edi, 2
mov dword [esp + 0x5e4], eax
jb 0x45c762
lea eax, [edi - 2]
cmp eax, 5
jb 0x45c758
mov edx, 2
lea eax, [edi - 5]
mov ebx, dword [esp + edx*4 + 0x5e0]
mov ebp, dword [esp + edx*4 + 0x5e4]
shr ebx, 0x1f
shr ebp, 0x1f
or dword [esp + edx*4 + 0x5dc], ebx
mov ebx, dword [esp + edx*4 + 0x5e0]
add ebx, ebx
or ebx, ebp
mov ebp, dword [esp + edx*4 + 0x5e4]
mov dword [esp + edx*4 + 0x5e0], ebx
mov ebx, dword [esp + edx*4 + 0x5e8]
add ebp, ebp
shr ebx, 0x1f
or ebp, ebx
mov ebx, dword [esp + edx*4 + 0x5ec]
mov dword [esp + edx*4 + 0x5e4], ebp
mov ebp, dword [esp + edx*4 + 0x5e8]
add ebp, ebp
shr ebx, 0x1f
or ebp, ebx
mov ebx, dword [esp + edx*4 + 0x5ec]
add ebx, ebx
mov dword [esp + edx*4 + 0x5e8], ebp
mov dword [esp + edx*4 + 0x5ec], ebx
add edx, 4
cmp edx, eax
jbe 0x45c5bd
mov eax, dword [esp + edx*4 + 0x5e0]
mov ebx, dword [esp + edx*4 + 0x5e0]
shr eax, 0x1f
or dword [esp + edx*4 + 0x5dc], eax
add ebx, ebx
mov dword [esp + edx*4 + 0x5e0], ebx
add edx, 1
cmp edx, edi
jbe 0x45c639
mov eax, dword [esp + ecx + 0x5e0]
test eax, eax
jne 0x45c66f
add edi, 0xffffffff
mov ecx, dword [esp + 0xc8]
mov ebp, ecx
shr ebp, 5
and ecx, 0x1f
xor ebx, ebx
cmp ebx, ecx
adc ebx, 0
lea edx, [ebp + ebx]
cmp edi, edx
jb 0x45c49d
mov edi, edx
test ebx, ebx
je 0x45c6ac
neg ecx
add ecx, 0x1f
mov eax, 1
shl eax, cl
mov dword [esp + 0x504], eax
jmp 0x45c6bd
mov eax, dword [esp + edx*4 + 0x5e4]
shr eax, 0x1f
mov dword [esp + 0x504], eax
test edx, edx
je 0x45c47c
mov eax, dword [esp + edx*4 + 0x5e0]
mov ecx, dword [esp + 0x504]
add eax, ecx
cmp eax, ecx
jae 0x45c721
mov dword [esp + edx*4 + 0x5e0], eax
mov dword [esp + 0x5e0], 0
lea edi, [ebp + ebx - 1]
mov eax, dword [esp + edi*4 + 0x5e0]
cmp eax, 0xffffffff
jne 0x45c70a
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
cmp eax, 0xffffffff
je 0x45c6fb
test edi, edi
je 0x45c423
add eax, 1
mov dword [esp + edi*4 + 0x5e0], eax
jmp 0x45b74f
test ebx, ebx
je 0x45c736
lea ebx, [ecx + ecx - 1]
not ebx
and eax, ebx
mov dword [esp + edx*4 + 0x5e0], eax
jmp 0x45c73d
mov dword [esp + edx*4 + 0x5e0], eax
test eax, eax
jne 0x45b74f
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45c745
jmp 0x45b74f
mov edx, 2
jmp 0x45c639
mov eax, dword [esp + ecx + 0x5e0]
jmp 0x45c668
add edi, 0xffffffff
jne 0x45b689
mov esi, dword [esp + 0x428]
jmp 0x45c4eb
mov ecx, dword [esp + 0x154]
mov eax, dword [esp + 0x340]
add dword [esp + 0xcc], ecx
mov ecx, dword [esp + 0x504]
shl ecx, 2
mov edx, dword [esp + ecx + 0x5a0]
test eax, eax
mov dword [esp + ecx + 0x520], edx
je 0x45c7ed
mov eax, dword [esp + 0x504]
xor edx, edx
lea eax, [eax - 1]
add edx, dword [esp + eax*4 + 0x560]
mov ebx, dword [esp + eax*4 + 0x5a0]
add ebx, edx
cmp ebx, edx
mov dword [esp + eax*4 + 0x520], ebx
mov edx, 0
adc edx, 0
add eax, 0xffffffff
jne 0x45c7c0
mov edx, dword [esp + ecx + 0x520]
test edx, edx
jne 0x45c80d
mov eax, dword [esp + 0x504]
add eax, 0xffffffff
mov edx, dword [esp + eax*4 + 0x520]
test edx, edx
je 0x45c7f8
mov dword [esp + 0x504], eax
mov eax, dword [esp + 0x524]
test eax, eax
jle 0x45c903
add dword [esp + 0xcc], 0xffffffff
add eax, eax
mov dword [esp + 0x524], eax
mov eax, dword [esp + 0x504]
cmp eax, 2
jb 0x45c903
lea edx, [eax - 2]
cmp edx, 5
jb 0x45c926
mov edx, 2
lea eax, [eax - 5]
mov ecx, dword [esp + edx*4 + 0x520]
mov ebp, dword [esp + edx*4 + 0x520]
mov ebx, dword [esp + edx*4 + 0x524]
mov edi, dword [esp + edx*4 + 0x524]
shr ecx, 0x1f
mov esi, dword [esp + edx*4 + 0x528]
or dword [esp + edx*4 + 0x51c], ecx
add ebp, ebp
shr ebx, 0x1f
mov ecx, dword [esp + edx*4 + 0x52c]
or ebp, ebx
mov ebx, dword [esp + edx*4 + 0x528]
mov dword [esp + edx*4 + 0x520], ebp
add edi, edi
shr esi, 0x1f
or edi, esi
add ebx, ebx
shr ecx, 0x1f
or ebx, ecx
mov ecx, dword [esp + edx*4 + 0x52c]
mov dword [esp + edx*4 + 0x524], edi
add ecx, ecx
mov dword [esp + edx*4 + 0x528], ebx
mov dword [esp + edx*4 + 0x52c], ecx
add edx, 4
cmp edx, eax
jbe 0x45c851
mov ebx, dword [esp + 0x504]
mov eax, dword [esp + edx*4 + 0x520]
mov ecx, dword [esp + edx*4 + 0x520]
shr eax, 0x1f
or dword [esp + edx*4 + 0x51c], eax
add ecx, ecx
mov dword [esp + edx*4 + 0x520], ecx
add edx, 1
cmp edx, ebx
jbe 0x45c8d4
mov dword [esp + 0x504], ebx
mov eax, dword [esp + 0x504]
mov edx, dword [esp + eax*4 + 0x520]
test edx, edx
jne 0x459e45
add dword [esp + 0x504], 0xffffffff
jmp 0x459e45
mov edx, 2
jmp 0x45c8cd
add esi, 0xffffffff
jne 0x45b8eb
jmp 0x45c783
mov eax, ebx
shl eax, 2
jmp 0x45b85a
mov eax, dword [esp + 0x5f0]
mov edi, 4
jmp 0x45b517
mov ebp, dword [esp + 0x430]
mov ebx, dword [esp + 0x42c]
mov esi, dword [esp + 0x428]
mov dword [esp + 0x424], edx
mov edi, dword [esp + 0xc0]
mov eax, dword [esp + 0x154]
add eax, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x154], eax
mov eax, dword [esp + edi*4 + 0x3a4]
test edx, edx
mov dword [esp + edi*4 + 0x5e0], eax
je 0x45c9e2
mov edx, edi
xor eax, eax
lea edx, [edx - 1]
add eax, dword [esp + edx*4 + 0x3e4]
mov ecx, dword [esp + edx*4 + 0x3a4]
add ecx, eax
cmp ecx, eax
mov dword [esp + edx*4 + 0x5e0], ecx
mov eax, 0
adc eax, 0
add edx, 0xffffffff
jne 0x45c9ae
mov eax, dword [esp + 0xc0]
mov eax, dword [esp + eax*4 + 0x5e0]
test eax, eax
jne 0x45c9f4
add edi, 0xffffffff
mov eax, dword [esp + edi*4 + 0x5e0]
test eax, eax
je 0x45c9e6
mov eax, dword [esp + 0x5e4]
test eax, eax
jle 0x45cae3
add dword [esp + 0x154], 0xffffffff
add eax, eax
cmp edi, 2
mov dword [esp + 0x5e4], eax
jb 0x45cae3
lea eax, [edi - 2]
cmp eax, 5
jb 0x45d1f5
mov dword [esp + 0x428], esi
mov edx, 2
lea eax, [edi - 5]
mov ecx, dword [esp + edx*4 + 0x5e0]
mov esi, dword [esp + edx*4 + 0x5e4]
shr ecx, 0x1f
shr esi, 0x1f
or dword [esp + edx*4 + 0x5dc], ecx
mov ecx, dword [esp + edx*4 + 0x5e0]
add ecx, ecx
or ecx, esi
mov esi, dword [esp + edx*4 + 0x5e4]
mov dword [esp + edx*4 + 0x5e0], ecx
mov ecx, dword [esp + edx*4 + 0x5e8]
add esi, esi
shr ecx, 0x1f
or esi, ecx
mov ecx, dword [esp + edx*4 + 0x5ec]
mov dword [esp + edx*4 + 0x5e4], esi
mov esi, dword [esp + edx*4 + 0x5e8]
add esi, esi
shr ecx, 0x1f
or esi, ecx
mov ecx, dword [esp + edx*4 + 0x5ec]
add ecx, ecx
mov dword [esp + edx*4 + 0x5e8], esi
mov dword [esp + edx*4 + 0x5ec], ecx
add edx, 4
cmp edx, eax
jbe 0x45ca38
mov esi, dword [esp + 0x428]
mov eax, dword [esp + edx*4 + 0x5e0]
mov ecx, dword [esp + edx*4 + 0x5e0]
shr eax, 0x1f
or dword [esp + edx*4 + 0x5dc], eax
add ecx, ecx
mov dword [esp + edx*4 + 0x5e0], ecx
add edx, 1
cmp edx, edi
jbe 0x45cabb
mov eax, dword [esp + edi*4 + 0x5e0]
test eax, eax
jne 0x45caf1
add edi, 0xffffffff
mov ecx, dword [esp + 0xc8]
mov eax, ecx
shr eax, 5
mov dword [esp + 0x84], eax
and ecx, 0x1f
xor edx, edx
cmp edx, ecx
adc edx, 0
mov dword [esp + 0x340], edx
lea edx, [eax + edx]
cmp edi, edx
jb 0x45cc3c
mov eax, dword [esp + 0x340]
mov edi, edx
test eax, eax
je 0x45cb42
neg ecx
add ecx, 0x1f
mov eax, 1
shl eax, cl
mov dword [esp + 0x504], eax
jmp 0x45cb53
mov eax, dword [esp + edx*4 + 0x5e4]
shr eax, 0x1f
mov dword [esp + 0x504], eax
test edx, edx
je 0x45cc1e
mov eax, dword [esp + edx*4 + 0x5e0]
mov ecx, dword [esp + 0x504]
add eax, ecx
cmp eax, ecx
jae 0x45cbe0
mov dword [esp + edx*4 + 0x5e0], eax
mov edx, dword [esp + 0x340]
mov eax, dword [esp + 0x84]
mov dword [esp + 0x5e0], 0
lea edi, [eax + edx - 1]
mov eax, dword [esp + edi*4 + 0x5e0]
cmp eax, 0xffffffff
jne 0x45cbae
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
cmp eax, 0xffffffff
je 0x45cb9f
test edi, edi
je 0x45cbc1
add eax, 1
mov dword [esp + edi*4 + 0x5e0], eax
jmp 0x45cc43
add dword [esp + 0x154], 1
mov edi, 1
mov eax, 0x80000000
mov dword [esp + 0x5e4], 0x80000000
jmp 0x45cc43
mov ecx, dword [esp + 0x340]
test ecx, ecx
je 0x45cc03
mov ecx, dword [esp + 0x504]
lea ecx, [ecx + ecx - 1]
not ecx
and eax, ecx
mov dword [esp + edx*4 + 0x5e0], eax
jmp 0x45cc0a
mov dword [esp + edx*4 + 0x5e0], eax
test eax, eax
jne 0x45cc43
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45cc0e
jmp 0x45cc43
mov edi, eax
add dword [esp + 0x154], edi
mov eax, edi
shl eax, 0x1f
mov dword [esp + 0x5e4], eax
mov eax, dword [esp + edi*4 + 0x5e0]
jmp 0x45cc43
mov eax, dword [esp + edi*4 + 0x5e0]
test ebp, ebp
je 0x45b517
mov dword [esp + 0x40], eax
mov eax, dword [esp + ebp*4 + 0x4c4]
mov dword [esp + 0x44], eax
lea edx, [edi + ebp]
mov dword [esp + 0x84], edx
lea ecx, [edi + ebp - 1]
mov dword [esp + 0x340], ecx
mov eax, dword [esp + 0x40]
mul dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x340]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
shl eax, 2
mov dword [esp + 0x504], eax
mov dword [esp + eax + 0x174], edx
mov dword [esp + eax + 0x170], ecx
mov eax, ebp
add eax, 0xffffffff
je 0x45cd5d
mov dword [esp + 0x428], esi
mov esi, dword [esp + 0x340]
lea ecx, [ebp - 1]
mov eax, dword [esp + edi*4 + 0x5e0]
mov edx, dword [esp + ecx*4 + 0x4c4]
mov dword [esp + esi*4 + 0x1b0], 0
mov dword [esp + 0x1f0], eax
mov dword [esp + 0x1f4], edx
mov eax, dword [esp + 0x1f0]
mul dword [esp + 0x1f4]
mov dword [esp + 0x1fc], eax
mov dword [esp + 0x1f8], edx
mov eax, dword [esp + esi*4 + 0x170]
add eax, dword [esp + 0x1fc]
cmp eax, dword [esp + 0x1fc]
mov dword [esp + esi*4 + 0x170], eax
mov edx, 0
adc edx, 0
add esi, 0xffffffff
mov eax, esi
shl eax, 2
add edx, dword [esp + 0x1f8]
mov dword [esp + eax + 0x170], edx
add ecx, 0xffffffff
jne 0x45ccc2
mov dword [esp + 0x340], esi
mov esi, dword [esp + 0x428]
mov dword [esp + 0x504], eax
mov eax, dword [esp + 0x504]
mov edx, dword [esp + 0x340]
mov dword [esp + eax + 0x1b0], 0
add edx, 0xffffffff
mov dword [esp + 0x340], edx
test edx, edx
jl 0x45cdf9
mov eax, edx
cmp eax, 6
jl 0x45cde2
xor eax, eax
mov dword [esp + edx*4 + 0x1b0], eax
mov dword [esp + edx*4 + 0x170], eax
mov dword [esp + edx*4 + 0x1ac], eax
mov dword [esp + edx*4 + 0x16c], eax
mov dword [esp + edx*4 + 0x1a8], eax
mov dword [esp + edx*4 + 0x168], eax
mov dword [esp + edx*4 + 0x1a4], eax
mov dword [esp + edx*4 + 0x164], eax
mov dword [esp + edx*4 + 0x1a0], eax
mov dword [esp + edx*4 + 0x160], eax
add edx, 0xfffffffb
cmp edx, 6
jge 0x45cd8b
mov dword [esp + 0x340], edx
xor eax, eax
mov dword [esp + edx*4 + 0x1b0], eax
mov dword [esp + edx*4 + 0x170], eax
add edx, 0xffffffff
test edx, edx
jge 0x45cde2
add edi, 0xffffffff
je 0x45cedf
mov dword [esp + 0x42c], ebx
mov dword [esp + 0x428], esi
mov esi, ebp
test ebp, ebp
je 0x45d1d9
mov dword [esp + 0x430], ebp
mov eax, edi
shl eax, 2
mov ebx, esi
shl ebx, 2
lea ecx, [eax + esi*4]
mov eax, dword [esp + edi*4 + 0x5e0]
mov edx, dword [esp + ebx + 0x4c4]
mov dword [esp + 0x640], eax
mov dword [esp + 0x644], edx
mov eax, dword [esp + 0x640]
mul dword [esp + 0x644]
mov dword [esp + 0x64c], eax
mov dword [esp + 0x648], edx
mov eax, dword [esp + ecx + 0x170]
add eax, dword [esp + 0x64c]
cmp eax, dword [esp + 0x64c]
mov edx, dword [esp + ecx + 0x16c]
mov dword [esp + ecx + 0x170], eax
mov ebp, 0
adc ebp, 0
mov eax, 0
add ebx, 0xfffffffc
add ebp, dword [esp + 0x648]
add edx, ebp
cmp edx, ebp
adc eax, 0
mov dword [esp + ecx + 0x16c], edx
add dword [esp + ecx + 0x1a8], eax
add ecx, 0xfffffffc
add esi, 0xffffffff
jne 0x45ce2e
mov ebp, dword [esp + 0x430]
add edi, 0xffffffff
jne 0x45ce10
mov ebx, dword [esp + 0x42c]
mov esi, dword [esp + 0x428]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x154]
add ecx, dword [esp + 0x90]
mov edi, eax
mov dword [esp + 0x154], ecx
mov ecx, eax
shl ecx, 2
mov edx, dword [esp + ecx + 0x170]
add eax, 0xffffffff
mov dword [esp + ecx + 0x5e0], edx
mov dword [esp + 0x84], eax
je 0x45cf4d
mov edx, eax
xor eax, eax
add eax, dword [esp + edx*4 + 0x1b0]
mov ebp, dword [esp + edx*4 + 0x170]
add ebp, eax
cmp ebp, eax
mov dword [esp + edx*4 + 0x5e0], ebp
mov eax, 0
adc eax, 0
add edx, 0xffffffff
jne 0x45cf20
mov edx, dword [esp + ecx + 0x5e0]
test edx, edx
jne 0x45cf76
mov eax, dword [esp + 0x84]
jmp 0x45cf5d
add eax, 0xffffffff
mov ecx, eax
shl ecx, 2
mov edx, dword [esp + ecx + 0x5e0]
test edx, edx
je 0x45cf5a
mov dword [esp + 0x84], eax
mov edi, eax
mov eax, dword [esp + 0x5e4]
test eax, eax
jle 0x45d073
add dword [esp + 0x154], 0xffffffff
add eax, eax
cmp edi, 2
mov dword [esp + 0x5e4], eax
jb 0x45d1cd
lea eax, [edi - 2]
cmp eax, 5
jb 0x45d1c3
mov dword [esp + 0x428], esi
mov edx, 2
lea eax, [edi - 5]
mov ebp, dword [esp + edx*4 + 0x5e0]
mov esi, dword [esp + edx*4 + 0x5e4]
shr ebp, 0x1f
shr esi, 0x1f
or dword [esp + edx*4 + 0x5dc], ebp
mov ebp, dword [esp + edx*4 + 0x5e0]
add ebp, ebp
or ebp, esi
mov esi, dword [esp + edx*4 + 0x5e4]
mov dword [esp + edx*4 + 0x5e0], ebp
mov ebp, dword [esp + edx*4 + 0x5e8]
add esi, esi
shr ebp, 0x1f
or esi, ebp
mov ebp, dword [esp + edx*4 + 0x5ec]
mov dword [esp + edx*4 + 0x5e4], esi
mov esi, dword [esp + edx*4 + 0x5e8]
add esi, esi
shr ebp, 0x1f
or esi, ebp
mov ebp, dword [esp + edx*4 + 0x5ec]
add ebp, ebp
mov dword [esp + edx*4 + 0x5e8], esi
mov dword [esp + edx*4 + 0x5ec], ebp
add edx, 4
cmp edx, eax
jbe 0x45cfba
mov esi, dword [esp + 0x428]
mov eax, dword [esp + edx*4 + 0x5e0]
mov ebp, dword [esp + edx*4 + 0x5e0]
shr eax, 0x1f
or dword [esp + edx*4 + 0x5dc], eax
add ebp, ebp
mov dword [esp + edx*4 + 0x5e0], ebp
add edx, 1
cmp edx, edi
jbe 0x45d03d
mov eax, dword [esp + ecx + 0x5e0]
test eax, eax
jne 0x45d073
add edi, 0xffffffff
mov ecx, dword [esp + 0xc8]
mov ebp, ecx
shr ebp, 5
and ecx, 0x1f
xor eax, eax
cmp eax, ecx
adc eax, 0
lea edx, [ebp + eax]
mov dword [esp + 0x340], eax
cmp edi, edx
jb 0x45d1b7
mov edi, edx
test eax, eax
je 0x45d0b7
neg ecx
add ecx, 0x1f
mov eax, 1
shl eax, cl
mov dword [esp + 0x504], eax
jmp 0x45d0c8
mov eax, dword [esp + edx*4 + 0x5e4]
shr eax, 0x1f
mov dword [esp + 0x504], eax
test edx, edx
je 0x45d196
mov eax, dword [esp + edx*4 + 0x5e0]
mov ecx, dword [esp + 0x504]
add eax, ecx
cmp eax, ecx
jae 0x45d151
mov dword [esp + edx*4 + 0x5e0], eax
mov eax, dword [esp + 0x340]
lea edi, [ebp + eax - 1]
mov dword [esp + 0x5e0], 0
mov eax, dword [esp + edi*4 + 0x5e0]
cmp eax, 0xffffffff
jne 0x45d11c
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
cmp eax, 0xffffffff
je 0x45d10d
test edi, edi
je 0x45d12f
add eax, 1
mov dword [esp + edi*4 + 0x5e0], eax
jmp 0x45b517
add dword [esp + 0x154], 1
mov edi, 1
mov eax, 0x80000000
mov dword [esp + 0x5e4], 0x80000000
jmp 0x45b517
mov ecx, dword [esp + 0x340]
test ecx, ecx
je 0x45d174
mov ecx, dword [esp + 0x504]
lea ebp, [ecx + ecx - 1]
not ebp
and eax, ebp
mov dword [esp + edx*4 + 0x5e0], eax
jmp 0x45d17b
mov dword [esp + edx*4 + 0x5e0], eax
test eax, eax
jne 0x45b517
mov eax, dword [esp + edi*4 + 0x5dc]
add edi, 0xffffffff
test eax, eax
je 0x45d183
jmp 0x45b517
mov edi, eax
add dword [esp + 0x154], edi
mov eax, edi
shl eax, 0x1f
mov dword [esp + 0x5e4], eax
mov eax, dword [esp + edi*4 + 0x5e0]
jmp 0x45b517
mov eax, dword [esp + edi*4 + 0x5e0]
jmp 0x45b517
mov edx, 2
jmp 0x45d03d
mov eax, dword [esp + ecx + 0x5e0]
jmp 0x45d06c
add edi, 0xffffffff
jne 0x45ce10
mov ebx, dword [esp + 0x42c]
mov esi, dword [esp + 0x428]
jmp 0x45cedf
mov edx, 2
jmp 0x45cabb
add edi, 0xffffffff
jne 0x45bd11
mov ebp, dword [esp + 0x430]
mov ebx, dword [esp + 0x42c]
mov esi, dword [esp + 0x428]
mov dword [esp + 0x424], edx
jmp 0x45c972
mov eax, dword [esp + 0x84]
shl eax, 2
jmp 0x45bc6e
mov eax, dword [esp + 0x5e8]
mov edi, 2
jmp 0x45bb5e
mov edi, 0x1b
mov eax, 2
mov dword [esp + 0x424], eax
jmp 0x45bb18
movsx eax, word [0x4bc9e4]
mov edx, dword [0x4bc86c]
mov ecx, dword [0x4bc868]
mov edi, dword [0x4bc864]
mov dword [esp + 0x154], eax
mov eax, dword [0x4bc860]
mov dword [esp + 0x5e4], edx
mov dword [esp + 0x5e8], ecx
mov dword [esp + 0x5ec], edi
mov dword [esp + 0x5f0], eax
mov edi, 4
jmp 0x45cc43
mov dword [esp + 0xcc], ecx
mov eax, 0
jle 0x45a3d4
xor ebx, ebx
add ebp, ebp
add ebx, 1
test ebp, ebp
jg 0x45d2be
test ebx, ebx
je 0x45a3d4
mov edi, dword [esp + 0xcc]
sub edi, ebx
mov dword [esp + 0xcc], edi
mov ecx, ebx
neg ecx
mov edi, esi
mov dword [esp + 0x430], ecx
shr edi, cl
mov ecx, ebx
shl esi, cl
mov ecx, dword [esp + 0x430]
or ebp, edi
mov edi, edx
shr edi, cl
mov ecx, ebx
shl edx, cl
or esi, edi
mov ecx, dword [esp + 0x430]
mov edi, eax
shr edi, cl
mov ecx, ebx
shl eax, cl
or edx, edi
jmp 0x45a3d4
mov edx, 0x4d104d43
jmp 0x459ca4
mov eax, ecx
lea eax, [eax + 1]
jmp 0x4594c7