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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xb0
mov eax, ecx
mov esi, dword [esp + 0xcc]
movzx ecx, byte [esi + 8]
mov edi, 1
shl edi, cl
mov dword [esp + 0x64], edi
cmp eax, 8
lea ecx, [edx + eax - 7]
mov edi, edx
mov dword [esp + 0x7c], ecx
cmovae edi, ecx
mov dword [esp + 0x90], edi
cmp dword [esi + 4], 9
mov ecx, 0x40
mov edi, 0x200
cmovl edi, ecx
mov dword [esp + 0x80], edi
add eax, edx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd0]
mov edi, dword [esi + 0x10]
mov dword [esp + 0x74], edi
mov edi, dword [eax]
mov eax, dword [ebx + 0x48]
cmp eax, 5
jl 0x583043
movd xmm0, dword [ecx]
pshufd xmm1, xmm0, 0
paddd xmm1, xmmword [0x8bb6e0]
movdqu xmmword [ecx + 0x10], xmm1
pshufd xmm0, xmm0, 0x50
paddd xmm0, xmmword [0x8bb6f0]
movq qword [ecx + 0x20], xmm0
cmp eax, 0xb
jb 0x583043
movd xmm0, dword [ecx + 4]
pshufd xmm1, xmm0, 0
paddd xmm1, xmmword [0x8bb6e0]
movdqu xmmword [ecx + 0x28], xmm1
pshufd xmm0, xmm0, 0x50
paddd xmm0, xmmword [0x8bb6f0]
movq qword [ecx + 0x38], xmm0
mov ebx, dword [esp + 0xdc]
lea eax, [edx + 8]
mov ecx, dword [esp + 0x70]
cmp eax, ecx
mov eax, ecx
jae 0x5848f3
mov ebp, dword [esp + 0xc4]
add dword [esp + 0x64], 0xfffffff0
mov ecx, dword [esp + 0x80]
lea esi, [ecx + edx]
mov dword [esp + 0x60], esi
lea ecx, [ecx*4]
mov dword [esp + 0x8c], ecx
movdqa xmm0, xmmword [0x8bb6e0]
movdqa xmm1, xmmword [0x8bb6f0]
lea ecx, [eax + ebp]
dec ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x54], ebx
jmp 0x5830c7
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 8]
mov edx, ebp
mov ecx, dword [esp + 0x70]
cmp eax, ecx
mov eax, ecx
jae 0x5848f9
mov esi, edi
mov dword [esp + 0x28], edx
mov ebx, eax
sub ebx, edx
mov eax, dword [esp + 0x64]
cmp edx, eax
mov ecx, eax
cmovb ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x74]
add ecx, edx
cmp ecx, eax
cmovae ecx, eax
mov eax, dword [esp + 0xcc]
mov eax, dword [eax + 0x44]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xd0]
mov edi, dword [eax + 0x48]
mov ebp, dword [eax + 0x50]
mov dword [esp + 0x30], ebp
mov ebp, edx
mov edx, dword [esp + 0xc8]
and ebp, edx
mov eax, dword [eax + 0x54]
mov dword [esp + 0x10], edi
test edi, edi
mov dword [esp + 0x58], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0x5c], esi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x18], eax
je 0x5832b0
mov eax, dword [esp + 0xc4]
add eax, ebp
lea ecx, [eax + ebx]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], eax
lea eax, [ebx + eax - 4]
mov dword [esp + 0x2c], eax
mov dword [esp + 0xc], 0x424
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
xor ebx, ebx
mov dword [esp], 0
jmp 0x58318b
inc ebx
cmp ebx, dword [esp + 0x10]
je 0x5832cf
mov eax, dword [esp + 0xd4]
mov edi, dword [eax + ebx*4]
cmp edi, dword [esp + 4]
ja 0x583180
mov eax, dword [esp + 0x28]
mov ecx, eax
sub ecx, edi
cmp ecx, eax
jae 0x583180
mov eax, dword [esp + 8]
mov ebp, dword [esp]
add eax, ebp
cmp eax, edx
ja 0x583180
and ecx, edx
lea esi, [ecx + ebp]
cmp esi, edx
ja 0x583180
mov ebp, dword [esp + 0xc4]
movzx eax, byte [ebp + eax]
cmp al, byte [ebp + esi]
jne 0x583180
add ecx, ebp
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x2c], esi
jae 0x5831df
xor ebp, ebp
jmp 0x583209
xor ebp, ebp
nop word cs:[eax + eax]
mov eax, dword [esi + ebp]
cmp eax, dword [ecx + ebp]
jne 0x583207
lea eax, [esi + ebp]
add eax, 4
add ebp, 4
cmp eax, dword [esp + 0x2c]
jbe 0x5831f0
add esi, ebp
mov eax, dword [esp + 0x14]
cmp esi, eax
jae 0x583238
sub eax, esi
lea edx, [eax + ebp]
mov dword [esp + 0x50], edx
nop word [eax + eax]
movzx edx, byte [ecx + ebp]
cmp dl, byte [esi]
jne 0x583231
inc esi
inc ebp
dec eax
jne 0x583220
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0xc8]
cmp ebp, 2
ja 0x58324c
jne 0x583180
cmp ebx, 1
ja 0x583180
imul eax, ebp, 0x87
lea ecx, [eax + 0x3cf]
cmp dword [esp + 0xc], ecx
jae 0x583180
test ebx, ebx
je 0x583285
mov ecx, ebx
and cl, 0xe
mov edx, 0x1ca10
shr edx, cl
and edx, 0xe
sub eax, edx
mov edx, dword [esp + 0xc8]
add eax, 0x3a8
mov ecx, eax
cmp dword [esp + 0xc], ecx
jae 0x583180
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], edi
mov dword [esp + 0xc], ecx
mov dword [esp], ebp
jmp 0x583180
mov dword [esp + 0xc], 0x424
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov dword [esp], 0
mov eax, dword [esp + 0xd0]
movzx ecx, byte [eax + 0x30]
mov ebp, dword [esp + 0xc4]
mov ebx, dword [esp + 8]
mov edi, dword [ebp + ebx]
mov esi, dword [ebp + ebx + 4]
and esi, dword [eax + 0x3c]
and edi, dword [eax + 0x38]
mov eax, edi
mov edx, 0xd3579bd3
mul edx
mov ebp, 0x1fe35a7b
imul edi, ebp
add edx, edi
mov edi, 0xd3579bd3
imul esi, edi
add esi, edx
shrd eax, esi, cl
shr esi, cl
test cl, 0x20
cmove esi, eax
mov eax, dword [esp + 0xc4]
lea ebp, [eax + ebx]
mov edx, dword [esp + 0xd0]
movzx ecx, byte [edx + 0x44]
mov eax, esi
shl eax, cl
mov ecx, dword [esp + 0x18]
lea eax, [ecx + eax*4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x24], esi
movzx edi, word [eax + esi*2]
mov ecx, edi
sub ecx, dword [edx + 0x2c]
mov eax, 0
cmovb ecx, eax
mov eax, dword [edx + 0x40]
mov dword [esp + 0x18], eax
cmp ecx, edi
mov dword [esp + 0x14], ebp
mov dword [esp + 0x6c], edi
jae 0x5834c0
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x58]
lea ecx, [eax + ebp]
mov dword [esp + 0x38], ecx
add eax, ebp
add eax, 0xfffffffc
mov dword [esp + 0x50], eax
mov eax, edi
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0x28]
mov edi, ebp
mov esi, dword [esp + 0xcc]
nop dword [eax]
dec eax
mov dword [esp + 0x10], eax
and eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + eax*4]
mov ebp, ecx
sub ebp, eax
cmp ebp, dword [esp + 4]
ja 0x5848ea
mov ecx, dword [esp + 8]
mov ebx, dword [esp]
add ecx, ebx
cmp ecx, edx
ja 0x583467
and eax, edx
mov esi, edx
lea edx, [eax + ebx]
cmp edx, esi
ja 0x583460
mov esi, dword [esp + 0xc4]
movzx ecx, byte [esi + ecx]
cmp cl, byte [esi + edx]
jne 0x583460
add eax, esi
mov edx, dword [esp + 0x50]
xor esi, esi
cmp edx, edi
jae 0x583400
mov edx, edi
jmp 0x583418
mov ecx, dword [edi + esi]
cmp ecx, dword [eax + esi]
jne 0x583415
lea ecx, [edi + esi]
add ecx, 4
add esi, 4
cmp ecx, edx
jbe 0x583400
lea edx, [edi + esi]
mov ecx, dword [esp + 0x38]
cmp edx, ecx
jae 0x583484
sub ecx, edx
lea edi, [ecx + esi]
nop word cs:[eax + eax]
movzx ebx, byte [eax + esi]
cmp bl, byte [edx]
jne 0x58343f
inc edx
inc esi
dec ecx
jne 0x583430
mov esi, edi
mov edx, dword [esp + 0xc8]
mov edi, dword [esp + 0x14]
cmp esi, 4
jb 0x583467
jmp 0x583490
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
cmp eax, ecx
mov esi, dword [esp + 0xcc]
mov ecx, dword [esp + 0x28]
ja 0x5833a0
jmp 0x5834d2
mov edx, dword [esp + 0xc8]
cmp esi, 4
jb 0x583467
imul eax, esi, 0x87
bsr ecx, ebp
imul ecx, ecx, 0xffffffe2
add eax, ecx
add eax, 0x3c0
cmp dword [esp + 0xc], eax
mov ecx, dword [esp + 0x34]
jae 0x58346b
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebp
mov dword [esp + 0xc], eax
mov dword [esp], esi
jmp 0x58346b
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0xcc]
mov ebp, esi
mov esi, dword [esp + 0x18]
and esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
mov dword [eax + esi*4], ecx
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x24]
inc word [eax + esi*2]
mov edi, dword [esp + 0xc]
cmp edi, 0x424
jne 0x583514
mov eax, dword [esp + 0xd0]
mov esi, dword [eax + 0x4c]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
mov eax, ebx
shr eax, 7
cmp ecx, eax
jae 0x583530
mov dword [esp + 0x44], 0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x20]
mov ebp, edi
jmp 0x583837
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x14]
imul edx, dword [eax], 0x1e35a7bd
shr edx, 0x11
mov eax, edx
and eax, 0xfffffffe
inc dword [esp + 0x48]
lea ecx, [ebx + 1]
mov dword [esp + 4], esi
mov dword [esi + 4], ecx
mov esi, ebp
mov ecx, dword [ebp + 0x64]
movzx ebp, byte [ecx + eax]
test ebp, ebp
je 0x583567
cmp dword [esp + 0x58], ebp
jae 0x58358e
mov dword [esp + 8], 0x424
mov dword [esp + 0x44], 0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x20]
mov ebp, edi
mov esi, dword [esp + 4]
jmp 0x583701
mov dword [esp], edx
mov dword [esp + 8], 0x424
mov ecx, dword [esi + 0x60]
movzx eax, word [ecx + eax*2]
mov ecx, dword [esi + 0x48]
mov dword [esp + 0x4c], eax
imul eax, ebp
add eax, dword [ecx + ebp*4 + 0x20]
mov dword [esp + 0x2c], ecx
add eax, dword [ecx + 0xa4]
lea ecx, [eax + ebp]
lea edi, [eax + ebp]
add edi, 0xfffffffc
xor edx, edx
cmp edi, eax
jae 0x5835d1
mov edi, dword [esp + 0xc]
cmp eax, ecx
jb 0x58360f
jmp 0x583641
mov dword [esp + 0x18], ebp
xor edx, edx
nop word [eax + eax]
mov esi, dword [eax + edx]
mov ebp, dword [esp + 0x14]
cmp esi, dword [ebp + edx]
jne 0x5835fa
lea esi, [eax + edx]
add esi, 4
add edx, 4
cmp esi, edi
jbe 0x5835e0
add eax, edx
mov esi, dword [esp + 0xcc]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x18]
cmp eax, ecx
jae 0x583641
sub ecx, eax
lea edi, [ecx + edx]
mov dword [esp + 0x18], edi
nop dword [eax + eax]
mov edi, edx
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + edi]
cmp dl, byte [eax]
jne 0x58363b
inc eax
inc edi
dec ecx
mov edx, edi
jne 0x583620
mov edx, dword [esp + 0x18]
jmp 0x58363d
mov edx, edi
mov edi, dword [esp + 0xc]
test edx, edx
je 0x5836e4
mov eax, dword [esi + 0x50]
add eax, edx
cmp eax, ebp
jbe 0x5836e4
mov eax, esi
mov esi, ebp
sub esi, edx
mov edi, dword [eax + 0x58]
mov eax, dword [eax + 0x5c]
lea ecx, [esi + esi]
lea ecx, [ecx + ecx*2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x18]
shrd edi, eax, cl
mov dword [esp + 0x3c], edx
mov ecx, dword [esp + 0x2c]
mov ch, byte [ecx + ebp]
mov edx, dword [esp + 0x18]
mov cl, dl
and cl, 0x1e
shr eax, cl
test dl, 0x20
cmove eax, edi
and eax, 0x3f
lea eax, [eax + esi*4]
mov cl, ch
shl eax, cl
mov edx, dword [esp + 0x4c]
add edx, dword [esp + 0x48]
add edx, eax
cmp edx, dword [esp + 0x40]
ja 0x5836d2
mov dword [esp + 0x44], esi
mov eax, dword [esp + 0x3c]
imul eax, eax, 0x87
bsr ecx, edx
imul ecx, ecx, 0xffffffe2
lea ebp, [eax + ecx]
add ebp, 0x3c0
cmp ebp, 0x424
jae 0x5848cf
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0xc]
jmp 0x5836f2
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x20]
mov ebp, edi
mov dword [esp + 0x44], 0
mov esi, dword [esp + 4]
mov edx, dword [esp]
or edx, 1
add ebx, 2
mov dword [esi + 4], ebx
mov eax, dword [esp + 0xcc]
mov eax, dword [eax + 0x64]
mov edi, edx
movzx edx, byte [eax + edx]
test edx, edx
je 0x583830
cmp dword [esp + 0x58], edx
jb 0x583830
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xcc]
mov eax, dword [ecx + 0x60]
movzx eax, word [eax + edi*2]
mov ecx, dword [ecx + 0x48]
mov dword [esp], eax
imul eax, edx
add eax, dword [ecx + edx*4 + 0x20]
mov dword [esp + 0x2c], ecx
add eax, dword [ecx + 0xa4]
lea ecx, [eax + edx]
lea ebx, [edx + eax]
add ebx, 0xfffffffc
xor edi, edi
cmp ebx, eax
mov dword [esp + 0x24], ebp
jb 0x583790
xor edi, edi
nop word [eax + eax]
mov esi, dword [eax + edi]
mov ebp, dword [esp + 0x14]
cmp esi, dword [ebp + edi]
jne 0x58378a
lea esi, [eax + edi]
add esi, 4
add edi, 4
cmp esi, ebx
jbe 0x583770
add eax, edi
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
cmp eax, ecx
jae 0x5837c1
sub ecx, eax
lea ebp, [ecx + edi]
nop dword [eax]
movzx ebx, byte [ebx + edi]
cmp bl, byte [eax]
jne 0x5837b3
inc eax
inc edi
dec ecx
mov ebx, dword [esp + 0x14]
jne 0x5837a0
mov edi, ebp
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
test edi, edi
jne 0x5837c9
jmp 0x583830
mov ecx, dword [esp + 0x4c]
test edi, edi
je 0x583830
mov ebx, dword [esp + 0xcc]
mov eax, dword [ebx + 0x50]
add eax, edi
cmp eax, edx
jbe 0x583830
mov esi, edx
sub esi, edi
mov ebp, dword [ebx + 0x58]
lea eax, [esi + esi]
lea eax, [eax + eax*2]
mov ebx, dword [ebx + 0x5c]
mov ecx, eax
shrd ebp, ebx, cl
mov ecx, dword [esp + 0x2c]
movzx edx, byte [ecx + edx]
mov ecx, eax
and cl, 0x1e
shr ebx, cl
test al, 0x20
cmove ebx, ebp
and ebx, 0x3f
lea eax, [ebx + esi*4]
mov ecx, edx
shl eax, cl
mov ebx, dword [esp + 0x48]
add ebx, dword [esp]
add ebx, eax
cmp ebx, dword [esp + 0x40]
jbe 0x584857
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
jmp 0x583837
mov edx, dword [esp + 0xc8]
cmp ebp, 0x425
jb 0x584200
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0xd0]
mov ecx, dword [eax + 0x50]
mov dword [esp + 0x6c], ecx
mov ecx, dword [eax + 0x54]
mov dword [esp + 0xa8], ecx
mov ecx, dword [eax + 0x48]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 0x3c]
mov dword [esp + 0xa4], ecx
mov ecx, dword [eax + 0x38]
mov dword [esp + 0xa0], ecx
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x9c], ecx
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x98], ecx
mov ecx, dword [eax + 0x44]
mov dword [esp + 0x94], ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], 0
mov edi, dword [esp + 0xd4]
mov eax, dword [esp + 0x3c]
nop word cs:[eax + eax]
mov dword [esp + 0x24], ebp
mov ebx, dword [esp + 0x58]
dec ebx
mov dword [esp + 0x3c], eax
lea ecx, [eax - 1]
cmp ecx, ebx
cmovae ecx, ebx
mov eax, dword [esp + 0xcc]
cmp dword [eax + 4], 5
mov eax, 0
cmovge ecx, eax
mov dword [esp], ecx
mov ebp, dword [esp + 0x28]
lea esi, [ebp + 1]
mov eax, dword [esp + 0x64]
cmp esi, eax
mov ecx, eax
cmovb ecx, esi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x74]
add ecx, ebp
inc ecx
cmp ecx, eax
cmovae ecx, eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0xcc]
mov eax, dword [eax + 0x44]
mov dword [esp + 0x84], eax
and esi, edx
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x58], ebx
mov dword [esp + 8], esi
je 0x583ae0
mov eax, dword [esp + 0xc4]
lea ecx, [eax + esi]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ecx
lea eax, [ebx + ecx - 4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x88]
add eax, esi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x30], 0x424
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
xor ebp, ebp
jmp 0x58399b
mov edi, dword [esp + 0xd4]
mov eax, dword [esp + 0x10]
inc ebp
cmp ebp, dword [esp + 0x2c]
je 0x583af8
mov esi, dword [edi + ebp*4]
cmp esi, dword [esp + 4]
ja 0x583990
mov ecx, eax
sub ecx, esi
cmp ecx, eax
jae 0x583990
mov ebx, dword [esp]
mov eax, dword [esp + 8]
add eax, ebx
cmp eax, edx
ja 0x58398c
and ecx, edx
lea edi, [ecx + ebx]
cmp edi, edx
ja 0x583985
mov ebx, dword [esp + 0xc4]
movzx eax, byte [ebx + eax]
cmp al, byte [ebx + edi]
jne 0x583985
mov eax, ebx
add ecx, ebx
mov edi, dword [esp + 0xc]
cmp dword [esp + 0x18], edi
jae 0x5839e6
xor ebx, ebx
mov eax, edi
jmp 0x583a0a
xor ebx, ebx
nop dword [eax + eax]
mov eax, dword [edi + ebx]
cmp eax, dword [ecx + ebx]
jne 0x583a07
lea eax, [edi + ebx]
add eax, 4
add ebx, 4
cmp eax, dword [esp + 0x18]
jbe 0x5839f0
lea eax, [edi + ebx]
mov edi, dword [esp + 0x14]
cmp eax, edi
jae 0x583a45
sub edi, eax
add edi, ebx
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x50]
sub edi, eax
movzx edx, byte [ecx + ebx]
cmp dl, byte [eax]
jne 0x583a35
inc eax
inc ebx
dec edi
cmp dword [esp + 0x28], edi
jne 0x583a20
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xd4]
mov edx, dword [esp + 0xc8]
jmp 0x583a4c
mov edi, dword [esp + 0xd4]
mov eax, dword [esp + 0x10]
cmp ebx, 2
ja 0x583a66
jne 0x583990
mov ecx, ebp
cmp ebp, 1
ja 0x583990
imul eax, ebx, 0x87
lea ecx, [eax + 0x3cf]
cmp dword [esp + 0x30], ecx
jae 0x58398c
mov dword [esp + 0x38], ebp
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x38], 0
je 0x583ab0
mov ecx, dword [esp + 0x38]
and cl, 0xe
mov edx, 0x1ca10
shr edx, cl
and edx, 0xe
sub eax, edx
mov edx, dword [esp + 0xc8]
add eax, 0x3a8
mov ecx, eax
cmp dword [esp + 0x30], ecx
mov eax, dword [esp + 0x10]
jae 0x583990
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], ecx
mov dword [esp], ebx
jmp 0x583990
mov dword [esp + 0x30], 0x424
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov esi, dword [esp + 0xc4]
mov ebx, dword [esp + 8]
mov ebp, dword [esi + ebx + 4]
and ebp, dword [esp + 0xa4]
mov ecx, dword [esi + ebx]
and ecx, dword [esp + 0xa0]
mov eax, ecx
mov edx, 0xd3579bd3
mul edx
mov edi, 0x1fe35a7b
imul ecx, edi
mov edi, 0xd3579bd3
add edx, ecx
imul ebp, edi
add ebp, edx
mov ecx, dword [esp + 0x98]
shrd eax, ebp, cl
shr ebp, cl
test cl, 0x20
cmove ebp, eax
mov eax, ebp
mov ecx, dword [esp + 0x94]
shl eax, cl
lea edx, [esi + ebx]
mov ecx, dword [esp + 0xa8]
lea eax, [ecx + eax*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x48], ebp
movzx esi, word [eax + ebp*2]
mov ecx, esi
sub ecx, dword [esp + 0x9c]
mov eax, 0
cmovb ecx, eax
mov dword [esp + 0xc], ecx
cmp ecx, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x40], esi
jae 0x583cc0
mov eax, dword [esp + 0x58]
lea ecx, [edx + eax]
mov dword [esp + 0x38], ecx
add eax, edx
add eax, 0xfffffffc
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x88]
add eax, ebx
mov dword [esp + 0x78], eax
mov edx, dword [esp + 0xc8]
jmp 0x583bd1
mov edx, dword [esp + 0xc8]
cmp esi, dword [esp + 0xc]
jbe 0x583cc7
dec esi
mov eax, esi
and eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
mov edi, dword [ecx + eax*4]
mov ebx, dword [esp + 0x10]
sub ebx, edi
cmp ebx, dword [esp + 4]
ja 0x583cc7
mov ebp, dword [esp]
mov eax, dword [esp + 8]
lea ecx, [eax + ebp]
cmp ecx, edx
ja 0x583bc7
and edi, edx
mov eax, edx
lea edx, [edi + ebp]
cmp edx, eax
ja 0x583bc0
mov eax, dword [esp + 0xc4]
movzx ecx, byte [eax + ecx]
cmp cl, byte [eax + edx]
jne 0x583bc0
add edi, eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
xor ebp, ebp
cmp eax, edx
jb 0x583c47
nop dword [eax + eax]
mov ecx, dword [edx + ebp]
cmp ecx, dword [edi + ebp]
jne 0x583c45
lea ecx, [edx + ebp]
add ecx, 4
add ebp, 4
cmp ecx, eax
jbe 0x583c30
add edx, ebp
mov eax, dword [esp + 0x38]
cmp edx, eax
jae 0x583c78
sub eax, edx
add eax, ebp
mov dword [esp + 0xac], eax
mov ecx, dword [esp + 0x78]
sub ecx, edx
movzx eax, byte [edi + ebp]
cmp al, byte [edx]
jne 0x583c78
inc edx
inc ebp
dec ecx
cmp dword [esp + 0x28], ecx
jne 0x583c60
mov ebp, dword [esp + 0xac]
mov edx, dword [esp + 0xc8]
cmp ebp, 4
jb 0x583bc7
imul eax, ebp, 0x87
bsr ecx, ebx
imul ecx, ecx, 0xffffffe2
add eax, ecx
add eax, 0x3c0
cmp dword [esp + 0x30], eax
jae 0x583bc7
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], eax
mov dword [esp], ebp
jmp 0x583bc7
mov edx, dword [esp + 0xc8]
mov esi, dword [esp + 0x40]
and esi, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov dword [ecx + esi*4], eax
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x48]
inc word [eax + ecx*2]
mov edi, dword [esp + 0x30]
cmp edi, 0x424
jne 0x583d40
mov eax, dword [esp + 0xd0]
mov ebx, dword [eax + 0x4c]
mov edi, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov eax, edi
shr eax, 7
cmp ecx, eax
mov esi, dword [esp + 0xcc]
jae 0x583d60
mov dword [esp + 8], 0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
jmp 0x583df2
mov dword [esp + 8], 0
mov ecx, dword [esp + 0x1c]
mov dword [esp + 4], ecx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
jmp 0x583df2
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x14]
imul ebp, dword [eax], 0x1e35a7bd
shr ebp, 0x11
mov eax, ebp
and eax, 0xfffffffe
mov ecx, dword [esp + 0x68]
inc ecx
mov dword [esp + 0x50], ecx
lea ecx, [edi + 1]
mov dword [ebx + 4], ecx
mov ecx, dword [esi + 0x64]
movzx ecx, byte [ecx + eax]
mov dword [esp + 8], 0
mov dword [esp + 0x38], 0x424
test ecx, ecx
mov dword [esp + 0x18], ebx
je 0x583dae
cmp dword [esp + 0x58], ecx
jae 0x583e51
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
or ebp, 1
add edi, 2
mov ecx, dword [esp + 0x18]
mov dword [ecx + 4], edi
mov ecx, dword [esi + 0x64]
movzx edi, byte [ecx + ebp]
test edi, edi
mov dword [esp + 4], ebx
je 0x583deb
cmp dword [esp + 0x58], edi
jae 0x583f4d
mov esi, dword [esp]
mov edi, dword [esp + 0xc]
add eax, 0xaf
cmp edi, eax
jb 0x584310
inc dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
cmp eax, 2
mov dword [esp], esi
ja 0x584414
mov ecx, dword [esp + 0x28]
add ecx, 9
inc eax
mov dword [esp + 0x60], eax
mov ebx, dword [esp + 4]
mov eax, ebx
mov dword [esp + 0x4c], esi
mov ebp, edi
mov esi, dword [esp + 8]
mov dword [esp + 0x44], esi
cmp ecx, dword [esp + 0x70]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
mov edi, dword [esp + 0xd4]
jb 0x5838c0
jmp 0x584420
mov ebx, ecx
mov ecx, dword [esi + 0x60]
movzx ecx, word [ecx + eax*2]
mov eax, dword [esi + 0x48]
mov dword [esp], ecx
imul ecx, ebx
add ecx, dword [eax + ebx*4 + 0x20]
mov dword [esp + 0xc], eax
add ecx, dword [eax + 0xa4]
lea edx, [ecx + ebx]
mov dword [esp + 4], ebx
lea esi, [ebx + ecx]
add esi, 0xfffffffc
xor ebx, ebx
cmp esi, ecx
mov dword [esp + 0x40], ebp
jae 0x584052
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x24]
cmp ecx, edx
jb 0x584092
mov edx, dword [esp + 0xc8]
test ebx, ebx
je 0x5840d7
mov ecx, dword [esi + 0x50]
add ecx, ebx
mov eax, dword [esp + 4]
cmp ecx, eax
jbe 0x5840fb
mov ecx, eax
mov ebp, eax
sub ebp, ebx
mov dword [esp + 8], ebp
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x5c]
mov ecx, ebp
add ecx, ebp
lea ecx, [ecx + ecx*2]
shrd eax, edx, cl
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0xc]
mov ebp, dword [esp + 4]
movzx eax, byte [eax + ebp]
mov byte [esp + 4], al
mov ebp, dword [esp + 8]
mov eax, ecx
and cl, 0x1e
shr edx, cl
test al, 0x20
cmove edx, dword [esp + 0x78]
and edx, 0x3f
lea edx, [edx + ebp*4]
movzx ecx, byte [esp + 4]
shl edx, cl
mov ebp, dword [esp]
add ebp, dword [esp + 0x50]
add ebp, edx
cmp ebp, dword [esp + 0x84]
jbe 0x58411f
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], 0
mov edx, dword [esp + 0xc8]
jmp 0x5841f1
mov ecx, dword [esi + 0x60]
movzx ecx, word [ecx + ebp*2]
mov eax, dword [esi + 0x48]
mov dword [esp + 0x30], ecx
imul ecx, edi
add ecx, dword [eax + edi*4 + 0x20]
mov dword [esp + 0x20], eax
add ecx, dword [eax + 0xa4]
lea edx, [ecx + edi]
lea esi, [edi + ecx]
add esi, 0xfffffffc
xor ebp, ebp
cmp esi, ecx
jb 0x583f9b
xor ebp, ebp
nop dword [eax]
mov ebx, dword [ecx + ebp]
mov eax, dword [esp + 0x14]
cmp ebx, dword [eax + ebp]
jne 0x583f99
lea ebx, [ecx + ebp]
add ebx, 4
add ebp, 4
cmp ebx, esi
jbe 0x583f80
add ecx, ebp
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x24]
cmp ecx, edx
jae 0x583fd5
sub edx, ecx
lea ebx, [edx + ebp]
mov dword [esp + 0x1c], ebx
nop word cs:[eax + eax]
mov ebx, dword [esp + 0x14]
movzx ebx, byte [ebx + ebp]
cmp bl, byte [ecx]
jne 0x583fd5
inc ecx
inc ebp
dec edx
jne 0x583fc0
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0xc8]
test ebp, ebp
je 0x583deb
mov ecx, dword [esi + 0x50]
add ecx, ebp
cmp ecx, edi
jbe 0x583deb
mov edx, edi
sub edx, ebp
mov eax, dword [esi + 0x58]
lea ecx, [edx + edx]
lea ecx, [ecx + ecx*2]
mov esi, dword [esi + 0x5c]
shrd eax, esi, cl
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + edi]
mov edi, edx
mov edx, ecx
and cl, 0x1e
shr esi, cl
test dl, 0x20
cmove esi, dword [esp + 0x14]
and esi, 0x3f
lea edx, [esi + edi*4]
mov ecx, eax
shl edx, cl
mov eax, dword [esp + 0x50]
add eax, dword [esp + 0x30]
add eax, edx
cmp eax, dword [esp + 0x84]
jbe 0x584173
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0x24]
jmp 0x583deb
xor ebx, ebx
nop word cs:[eax + eax]
mov ebp, dword [ecx + ebx]
mov eax, dword [esp + 0x14]
cmp ebp, dword [eax + ebx]
jne 0x584079
lea ebp, [ecx + ebx]
add ebp, 4
add ebx, 4
cmp ebp, esi
jbe 0x584060
add ecx, ebx
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x40]
cmp ecx, edx
jae 0x583e9f
sub edx, ecx
lea ebp, [edx + ebx]
mov dword [esp + 8], ebp
nop dword [eax + eax]
mov ebp, ebx
mov ebx, dword [esp + 0x14]
movzx ebx, byte [ebx + ebp]
cmp bl, byte [ecx]
jne 0x5840c2
inc ecx
inc ebp
dec edx
mov ebx, ebp
jne 0x5840a0
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0xc8]
jmp 0x5840cb
mov edx, dword [esp + 0xc8]
mov ebx, ebp
mov ebp, dword [esp + 0x40]
test ebx, ebx
jne 0x583eae
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, ecx
mov dword [esp + 8], 0
jmp 0x583dc5
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], 0
jmp 0x583dc5
mov ecx, ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 4], ecx
imul ecx, ecx, 0x87
mov dword [esp], ebp
bsr edx, ebp
imul edx, edx, 0xffffffe2
lea eax, [ecx + edx]
add eax, 0x3c0
cmp eax, 0x424
jae 0x5841cc
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov edx, dword [esp + 0xc8]
mov eax, ebx
mov ebx, ebp
jmp 0x5841f1
mov dword [esp + 0x14], edi
imul ecx, ebp, 0x87
bsr edx, eax
imul edx, edx, 0xffffffe2
add ecx, edx
add ecx, 0x3c0
cmp ecx, dword [esp + 0x38]
mov edx, dword [esp + 0xc8]
mov ebx, eax
mov eax, dword [esp + 0x24]
mov esi, dword [esp]
mov edi, dword [esp + 0xc]
jb 0x583df2
mov edi, ebx
mov ebx, dword [esp + 0x48]
inc ebx
mov esi, dword [esp + 0x18]
mov dword [esi + 8], ebx
mov dword [esp + 4], ebp
mov esi, edi
mov edi, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 8], ecx
jmp 0x583df2
mov edx, dword [esp + 0x48]
inc edx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x48], edx
mov dword [ecx + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0xc8]
mov eax, ebx
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0x40]
jmp 0x583dc5
mov edi, dword [esp + 0x5c]
inc edi
mov eax, dword [esp + 0x28]
lea ebp, [eax + 1]
mov ecx, dword [esp + 0x60]
cmp ebp, ecx
mov ebx, dword [esp + 0xdc]
jbe 0x5830b4
mov eax, dword [esp + 0x8c]
add eax, ecx
cmp ebp, eax
jbe 0x58433c
mov ecx, dword [esp + 0x28]
add ecx, 0x11
mov eax, dword [esp + 0x7c]
cmp ecx, eax
cmovae ecx, eax
cmp ebp, ecx
jae 0x5830b4
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x50]
mov dword [esp + 8], ecx
mov ecx, dword [eax + 0x54]
mov dword [esp + 4], ecx
mov ecx, dword [eax + 0x3c]
mov dword [esp + 0x10], ecx
mov ecx, dword [eax + 0x30]
mov dword [esp], ecx
mov ecx, dword [eax + 0x38]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 0x40]
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x44]
mov dword [esp + 0x34], eax
nop word cs:[eax + eax]
mov ecx, ebp
and ecx, dword [esp + 0xc8]
mov ebx, dword [esp + 0xc4]
mov eax, dword [ebx + ecx]
and eax, dword [esp + 0x2c]
mov esi, eax
mov edx, 0x1fe35a7b
imul esi, edx
mov edx, 0xd3579bd3
mul edx
add edx, esi
mov ebx, dword [ebx + ecx + 4]
and ebx, dword [esp + 0x10]
mov ecx, 0xd3579bd3
imul ebx, ecx
add ebx, edx
mov ecx, dword [esp]
shrd eax, ebx, cl
shr ebx, cl
test cl, 0x20
cmove ebx, eax
mov ecx, dword [esp + 8]
movzx eax, word [ecx + ebx*2]
mov edx, dword [esp + 0x18]
and edx, eax
inc eax
mov word [ecx + ebx*2], ax
mov ecx, dword [esp + 0x34]
shl ebx, cl
add ebx, edx
mov eax, dword [esp + 4]
mov dword [eax + ebx*4], ebp
add edi, 4
add ebp, 4
cmp ebp, dword [esp + 0x28]
jb 0x584290
jmp 0x584408
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
lea edx, [ecx + eax]
mov eax, dword [esp + 0x64]
cmp edx, eax
cmovae edx, eax
mov dword [esp + 0x68], edx
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
mov esi, dword [esp + 0x44]
jmp 0x584420
mov ecx, dword [esp + 0x28]
add ecx, 9
mov eax, dword [esp + 0x7c]
cmp ecx, eax
cmovae ecx, eax
cmp ebp, ecx
jae 0x5830b4
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x50]
mov dword [esp + 8], ecx
mov ecx, dword [eax + 0x54]
mov dword [esp + 4], ecx
mov ecx, dword [eax + 0x3c]
mov dword [esp + 0x10], ecx
mov ecx, dword [eax + 0x30]
mov dword [esp], ecx
mov ecx, dword [eax + 0x38]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 0x40]
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x44]
mov dword [esp + 0x34], eax
nop
mov ecx, ebp
and ecx, dword [esp + 0xc8]
mov ebx, dword [esp + 0xc4]
mov eax, dword [ebx + ecx]
and eax, dword [esp + 0x2c]
mov esi, eax
mov edx, 0x1fe35a7b
imul esi, edx
mov edx, 0xd3579bd3
mul edx
add edx, esi
mov ebx, dword [ebx + ecx + 4]
and ebx, dword [esp + 0x10]
mov ecx, 0xd3579bd3
imul ebx, ecx
add ebx, edx
mov ecx, dword [esp]
shrd eax, ebx, cl
shr ebx, cl
test cl, 0x20
cmove ebx, eax
mov ecx, dword [esp + 8]
movzx eax, word [ecx + ebx*2]
mov edx, dword [esp + 0x18]
and edx, eax
inc eax
mov word [ecx + ebx*2], ax
mov ecx, dword [esp + 0x34]
shl ebx, cl
add ebx, edx
mov eax, dword [esp + 4]
mov dword [eax + ebx*4], ebp
add edi, 2
add ebp, 2
cmp ebp, dword [esp + 0x28]
jb 0x584390
mov ebx, dword [esp + 0xdc]
jmp 0x5830b4
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 8]
mov ebx, dword [esp + 4]
mov dword [esp + 8], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 4], ebx
mov ebx, dword [esp]
cmp ebx, dword [esp + 0x68]
jbe 0x5844d0
lea esi, [ebx + 0xf]
cmp ebx, dword [esp + 0x68]
ja 0x584520
test esi, esi
je 0x584520
mov edx, dword [esp + 0xd4]
mov ecx, dword [edx + 8]
mov dword [edx + 0xc], ecx
movq xmm2, qword [edx]
movq qword [edx + 4], xmm2
mov edi, dword [esp]
mov dword [edx], edi
mov ecx, dword [esp + 0xd0]
mov ecx, dword [ecx + 0x48]
cmp ecx, 5
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
jl 0x584528
movd xmm3, edi
pshufd xmm4, xmm3, 0
paddd xmm4, xmm0
movdqu xmmword [edx + 0x10], xmm4
pshufd xmm3, xmm3, 0x50
paddd xmm3, xmm1
movq qword [edx + 0x20], xmm3
cmp ecx, 0xb
jb 0x584528
pshufd xmm3, xmm2, 0
paddd xmm3, xmm0
movdqu xmmword [edx + 0x28], xmm3
pshufd xmm2, xmm2, 0x50
paddd xmm2, xmm1
movq qword [edx + 0x38], xmm2
jmp 0x584528
mov ecx, dword [esp + 0xd4]
mov edi, dword [ecx]
xor esi, esi
cmp edi, ebx
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
je 0x584528
mov ecx, dword [esp + 0xd4]
mov ebp, dword [ecx + 4]
mov esi, 1
mov ebx, dword [esp]
cmp ebp, ebx
je 0x58443c
lea ecx, [ebx + 3]
mov edx, ecx
sub edx, edi
cmp edx, 6
ja 0x58483e
shl edx, 2
mov esi, 0x9750468
mov ecx, edx
jmp 0x58484d
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x54]
mov dword [edi], ecx
mov ecx, ebp
shl ecx, 0x19
or ecx, ebx
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0xcc]
mov edx, dword [ecx + 0x38]
lea eax, [edx + 0x10]
cmp eax, esi
jbe 0x584560
mov word [edi + 0xe], si
mov eax, edi
xor edi, edi
jmp 0x5845d9
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 0x34]
mov ecx, eax
add cl, 2
mov dword [esp + 0x54], edi
mov edi, 1
shl edi, cl
sub esi, edx
add edi, esi
add edi, 0xfffffff0
bsr edx, edi
mov esi, 0xffffffff
mov ecx, eax
mov dword [esp + 0x2c], eax
shl esi, cl
xor edx, 0xffffffe0
add edx, 0x1f
not esi
and esi, edi
xor ebx, ebx
bt edi, edx
setb bl
lea ebp, [ebx + 2]
mov ecx, edx
shl ebp, cl
add esi, dword [esp + 0x28]
sub edx, eax
lea ebx, [ebx + edx*2]
add ebx, 0xfffe
mov ecx, eax
shl ebx, cl
add esi, ebx
mov ebx, dword [esp + 4]
shl edx, 0xa
or esi, edx
sub edi, ebp
mov ebp, dword [esp + 8]
mov eax, dword [esp + 0x54]
mov word [eax + 0xe], si
mov ecx, dword [esp + 0x2c]
shr edi, cl
mov dword [eax + 8], edi
add ebp, ebx
mov ecx, dword [esp + 0x5c]
cmp ecx, 5
ja 0x5845f0
mov edx, ecx
jmp 0x584650
cmp ecx, 0x81
ja 0x58460e
lea edx, [ecx - 2]
bsr edi, edx
xor edi, 0xffffffe0
lea ecx, [edi + 0x1f]
shr edx, cl
lea edx, [edx + edi*2]
add edx, 0x40
jmp 0x584650
cmp ecx, 0x841
ja 0x584627
add ecx, 0xffffffbe
bsr edx, ecx
xor edx, 0xffe0
add edx, 0x2a
jmp 0x584650
mov dx, 0x15
cmp ecx, 0x1842
jb 0x584650
xor edx, edx
cmp ecx, 0x5842
setb dl
xor edx, 0x17
nop word cs:[eax + eax]
cmp ebp, 9
ja 0x584660
add ebp, 0xfffffffe
mov ecx, ebp
jmp 0x5846a0
cmp ebp, 0x85
ja 0x584681
add ebp, 0xfffffffa
bsr edi, ebp
xor edi, 0xffffffe0
lea ecx, [edi + 0x1f]
shr ebp, cl
lea ecx, [edi*2 + 0x42]
add ecx, ebp
jmp 0x5846a0
mov cx, 0x17
cmp ebp, 0x845
ja 0x5846a0
add ebp, 0xffffffba
bsr ecx, ebp
xor ecx, 0xffe0
add ecx, 0x2c
nop dword [eax]
mov edi, ecx
and edi, 7
mov ebx, edx
and ebx, 7
lea edi, [edi + ebx*8]
movzx edi, di
test esi, 0x3ff
jne 0x5846d0
cmp dx, 7
ja 0x5846d0
cmp cx, 0xf
ja 0x5846d0
lea edx, [edi + 0x40]
cmp cx, 8
cmovae edi, edx
jmp 0x5846fe
movzx ecx, cx
shr ecx, 3
movzx edx, dx
shr edx, 3
lea edx, [edx + edx*2]
add edx, ecx
movzx edx, dx
lea ecx, [edx + edx]
mov esi, 0x520d40
shr esi, cl
shl edx, 6
and esi, 0xc0
add esi, edx
add edi, esi
add edi, 0x40
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0x54]
mov word [eax + 0xc], di
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0xe4]
add dword [edx], ecx
mov eax, dword [esp + 0x10]
lea edi, [eax + ebx]
mov ecx, dword [esp + 0x90]
cmp edi, ecx
mov esi, ecx
cmovb esi, edi
lea ebp, [eax + 2]
mov ecx, ebx
shr ecx, 2
mov edx, dword [esp]
cmp edx, ecx
mov dword [esp + 0xc], edi
jae 0x584750
shl edx, 2
sub edi, edx
cmp ebp, edi
cmova edi, ebp
cmp esi, edi
cmovb edi, esi
mov ebp, edi
mov ebx, dword [esp + 0xdc]
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 4]
lea ecx, [ecx + eax*2]
add ecx, dword [esp + 0x10]
add edx, 0x10
mov dword [esp + 0x54], edx
xor edi, edi
cmp ebp, esi
mov dword [esp + 0x60], ecx
jae 0x5830b0
mov eax, dword [esp + 0xd0]
mov ecx, dword [eax + 0x50]
mov dword [esp + 0x10], ecx
mov ecx, dword [eax + 0x54]
mov dword [esp + 4], ecx
mov ecx, dword [eax + 0x3c]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + 0x38]
mov dword [esp + 8], ecx
mov ecx, dword [eax + 0x40]
mov dword [esp], ecx
mov eax, dword [eax + 0x44]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], esi
nop dword [eax]
mov ecx, ebp
and ecx, dword [esp + 0xc8]
mov edi, dword [esp + 0xc4]
mov eax, dword [edi + ecx]
and eax, dword [esp + 8]
mov esi, eax
mov edx, 0x1fe35a7b
imul esi, edx
mov ebx, 0xd3579bd3
mul ebx
add edx, esi
mov esi, dword [edi + ecx + 4]
and esi, dword [esp + 0x28]
imul esi, ebx
add esi, edx
mov ecx, dword [esp + 0x34]
shrd eax, esi, cl
shr esi, cl
test cl, 0x20
cmove esi, eax
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + esi*2]
mov edx, dword [esp]
and edx, eax
inc eax
mov word [ecx + esi*2], ax
mov ecx, dword [esp + 0x2c]
shl esi, cl
add esi, edx
mov eax, dword [esp + 4]
mov dword [eax + esi*4], ebp
mov esi, dword [esp + 0x18]
inc ebp
cmp esi, ebp
jne 0x5847c0
mov ebx, dword [esp + 0xdc]
xor edi, edi
jmp 0x5830b0
sub ecx, ebp
cmp ecx, 6
ja 0x5848a0
shl ecx, 2
mov esi, 0xfdb1ace
shr esi, cl
and esi, 0xf
jmp 0x58443c
imul eax, edi, 0x87
bsr ecx, ebx
imul ecx, ecx, 0xffffffe2
add eax, ecx
add eax, 0x3c0
cmp eax, dword [esp + 8]
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
jb 0x583837
mov ecx, dword [esp + 0x10]
inc ecx
mov ebp, dword [esp + 4]
mov dword [ebp + 8], ecx
mov dword [esp + 0x3c], edi
mov ecx, ebx
mov ebp, eax
mov dword [esp + 0x44], esi
jmp 0x583837
mov esi, 2
mov ecx, dword [esp + 0xd4]
cmp dword [ecx + 8], ebx
je 0x58443c
mov esi, 3
mov ecx, dword [esp + 0xd4]
cmp dword [ecx + 0xc], ebx
jne 0x584439
jmp 0x58443c
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
mov esi, dword [esp + 4]
mov dword [esi + 8], eax
mov dword [esp + 8], ebp
mov ecx, edx
jmp 0x5836fe
mov ecx, dword [esp + 0x28]
jmp 0x5834d2
mov dword [esp + 0x54], ebx
mov ebp, edx
add edi, eax
sub edi, ebp
mov eax, dword [esp + 0xd8]
mov dword [eax], edi
mov ecx, dword [esp + 0x54]
sub ecx, ebx
sar ecx, 4
mov eax, dword [esp + 0xe0]
add dword [eax], ecx
add esp, 0xb0
pop esi
pop edi
pop ebx
pop ebp
ret