Function at 0x403d40
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc8
movsd xmm0, qword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x50], eax
movsd qword [ebp - 0xac], xmm0
mov edx, dword [ebp - 0xa8]
mov eax, edx
mov dword [ebp - 0x14], edx
push esi
push edi
mov edi, dword [ebp + 0x10]
and eax, 0x80000000
je 0x403d8a
and edx, 0x7fffffff
mov dword [ebp - 0xa8], edx
movsd xmm0, qword [ebp - 0xac]
mov dword [ebp - 0x14], edx
xor ecx, ecx
test eax, eax
mov eax, dword [ebp + 0x1c]
setne cl
mov dword [eax], ecx
mov eax, edx
and eax, 0x7ff00000
cmp eax, 0x7ff00000
jne 0x403e59
cmp dword [ebp - 0xac], 0
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x270f
jne 0x403e0a
test edx, 0xfffff
jne 0x403e0a
mov edx, dword [ebp + 0x24]
test edx, edx
jne 0x403dfd
push 8
call fcn.00406a60
add esp, 4
mov edx, eax
mov esi, str.Infinity
mov byte [edx], 0x49
mov ecx, edx
sub esi, edx
mov al, byte [esi + ecx + 1]
inc ecx
mov byte [ecx], al
test al, al
jne 0x403de1
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x403df5
mov dword [eax], ecx
pop edi
mov eax, edx
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x28], 8
ja 0x403dd5
xor edx, edx
lea ecx, [edx + 8]
jmp 0x403dec
mov edx, dword [ebp + 0x24]
test edx, edx
jne 0x403e4c
push 3
call fcn.00406a60
add esp, 4
mov edx, eax
mov esi, 0x4fc41c
mov byte [edx], 0x4e
mov ecx, edx
sub esi, edx
nop dword [eax]
mov al, byte [esi + ecx + 1]
inc ecx
mov byte [ecx], al
test al, al
jne 0x403e30
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x403df5
pop edi
mov dword [eax], ecx
mov eax, edx
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x28], 3
ja 0x403e1d
xor edx, edx
lea ecx, [edx + 3]
jmp 0x403e3b
ucomisd xmm0, qword [0x4fc440]
lahf
test ah, 0x44
jp 0x403ebd
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x24]
mov dword [eax], 1
test edx, edx
jne 0x403eb0
push 1
call fcn.00406a60
add esp, 4
mov edx, eax
mov esi, 0x4fc420
mov byte [edx], 0x30
mov ecx, edx
sub esi, edx
nop
mov al, byte [esi + ecx + 1]
inc ecx
mov byte [ecx], al
test al, al
jne 0x403e90
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x403df5
pop edi
mov dword [eax], ecx
mov eax, edx
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x28], 1
ja 0x403e83
xor edx, edx
lea ecx, [edx + 1]
jmp 0x403e9b
push ebx
mov ebx, dword [ebp - 0xac]
mov esi, edx
and esi, 0xfffff
shr edx, 0x14
shld esi, ebx, 0xb
mov dword [ebp + 0xc], edx
shl ebx, 0xb
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x6c], edx
test edx, edx
je 0x403f02
or esi, 0x80000000
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0xb8], 0
jmp 0x403ff2
lea eax, [edx + 1]
mov dword [ebp - 0xb8], 1
shld esi, ebx, 1
mov dword [ebp - 0x80], eax
mov edi, edx
add ebx, ebx
mov dword [ebp - 0x1c], esi
xor eax, eax
mov dword [ebp - 0x28], ebx
or eax, esi
jne 0x403f3b
mov esi, ebx
lea edi, [edx - 0x20]
mov edx, edi
mov dword [ebp - 0x1c], esi
xor ebx, ebx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x6c], edx
mov ecx, esi
xor eax, eax
and ecx, 0xffff0000
or eax, ecx
jne 0x403f61
shld esi, ebx, 0x10
lea edx, [edi - 0x10]
shl ebx, 0x10
mov edi, edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x28], ebx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x6c], edx
mov ecx, esi
xor eax, eax
and ecx, 0xff000000
or eax, ecx
jne 0x403f87
shld esi, ebx, 8
lea edx, [edi - 8]
shl ebx, 8
mov edi, edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x28], ebx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x6c], edx
mov ecx, esi
xor eax, eax
and ecx, 0xf0000000
or eax, ecx
jne 0x403fab
shld esi, ebx, 4
lea edx, [edi - 4]
shl ebx, 4
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x28], ebx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x6c], edx
mov ecx, esi
xor eax, eax
and ecx, 0xc0000000
or eax, ecx
jne 0x403fcf
shld esi, ebx, 2
shl ebx, 2
sub edx, 2
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x28], ebx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x6c], edx
test esi, esi
jl 0x403fec
jg 0x403fd9
test ebx, ebx
jb 0x403fec
shld esi, ebx, 1
add ebx, ebx
mov dword [ebp - 0x1c], esi
dec edx
mov dword [ebp - 0x28], ebx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x6c], edx
sub dword [ebp - 0x80], edx
mov edi, dword [ebp + 0x10]
movsx ecx, word [edx*2 + 0x51ea1e]
lea eax, [edx - 0x3fe]
shl ecx, 4
add ecx, 0x51c008
cmp eax, dword [ecx + 0xc]
jl 0x40401b
jne 0x404026
cmp esi, dword [ecx]
jb 0x40401b
jne 0x404026
cmp ebx, dword [ecx + 4]
jae 0x404026
movsx ecx, word [edx*2 + 0x51ea1e]
dec ecx
jmp 0x40402e
movsx ecx, word [edx*2 + 0x51ea1e]
add ecx, 0xfffffeaa
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x2c], ecx
test edi, edi
js 0x4040bb
cmp edi, 9
jg 0x4040bb
cmp edi, 5
mov dword [ebp - 0xb0], 1
lea ebx, [edi - 4]
mov dword [ebp - 0x3c], 0xffffffff
cmovle ebx, edi
mov edi, ebx
mov dword [ebp - 0x94], ebx
mov ebx, dword [ebp - 0x28]
mov dword [ebp - 0xb4], edi
cmp edi, 5
ja case.default.0x404077
jmp dword [edi*4 + 0x405bec]
mov dword [ebp - 0xb0], 0
mov ecx, dword [ebp - 0x50]
test ecx, ecx
mov eax, dword [ebp - 0x24]
cmovg eax, ecx
mov ecx, eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x50], ecx
jmp case.default.0x404077
mov dword [ebp - 0xb0], 0
mov eax, dword [ebp - 0x50]
inc eax
add eax, ecx
mov dword [ebp - 0x3c], eax
test eax, eax
jg case.default.0x404077
mov eax, 1
jmp case.default.0x404077
mov dword [ebp - 0x94], 0
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 1
mov dword [ebp - 0x3c], 0xffffffff
mov eax, 0x12
mov dword [ebp - 0x50], 0
mov edi, dword [ebp + 0x24]
mov dword [ebp - 0x60], edi
test edi, edi
jne 0x404180
push eax
call fcn.00406a60
mov edx, dword [ebp + 0xc]
mov edi, eax
add esp, 4
mov dword [ebp - 0x60], edi
xor ecx, ecx
mov dword [ebp - 0x78], edi
cmp dword [ebp - 0xb4], 2
mov dword [ebp - 0x90], ecx
jl 0x404127
cmp dword [ebp - 0xb0], ecx
je 0x404148
cmp dword [ebp - 0xac], ecx
jne 0x404148
mov eax, dword [ebp - 0x14]
test eax, 0xfffff
jne 0x404148
test eax, 0x7fe00000
cmovne ecx, dword [ebp - 0x24]
mov dword [ebp - 0x90], ecx
xor eax, eax
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x3c], eax
jge 0x404197
mov eax, dword [ebp - 0xb4]
cmp eax, 3
je 0x404165
cmp eax, 5
jne 0x404197
xor ebx, ebx
mov dword [ebp + 0xc], ebx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x50]
mov edi, dword [ebp - 0x60]
not eax
mov dword [ebp - 0x2c], eax
jmp 0x405a02
cmp dword [ebp + 0x28], eax
ja 0x40410b
mov ecx, dword [ebp + 0x20]
test ecx, ecx
je 0x40418e
mov dword [ecx], eax
pop ebx
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, 0x433
mov dword [ebp - 8], 1
sub ecx, edx
mov dword [ebp - 0x88], 0
mov edx, dword [ebp - 0x2c]
xorps xmm0, xmm0
mov dword [ebp - 0x20], ecx
movlpd qword [ebp - 0xc0], xmm0
test edx, edx
jns 0x404336
cmp edx, 0xffffffe7
jl 0x404389
mov ecx, dword [ebp - 0x2c]
mov edx, ebx
not ecx
shrd edx, esi, 0xb
mov dword [ebp - 0xc], ecx
shr esi, 0xb
mov eax, dword [ecx*4 + 0x51faf8]
add eax, 0x35
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], esi
cmp eax, 0x3d
jle 0x404261
add eax, 0xffffffc3
xor ecx, ecx
bts ecx, eax
mov dword [ebp - 0x88], eax
xor edi, edi
cmp eax, 0x20
cmovae edi, ecx
xor ecx, edi
mov dword [ebp - 0x8c], edi
cmp eax, 0x40
mov eax, edi
mov edi, dword [ebp - 0x78]
cmovae eax, ecx
add ecx, 0xffffffff
mov dword [ebp - 0x14], ecx
adc eax, 0xffffffff
and ecx, edx
mov dword [ebp - 0x8c], eax
and eax, esi
or ecx, eax
jne 0x40439a
mov eax, dword [ebp - 0x88]
movq xmm1, qword [ebp - 0x44]
sub dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0xc]
movd xmm0, eax
psrlq xmm1, xmm0
movq qword [ebp - 0x44], xmm1
mov esi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x44]
jmp 0x404270
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], eax
mov eax, dword [ecx*8 + 0x51fa20]
mov ecx, dword [ecx*8 + 0x51fa24]
push esi
push edx
push ecx
push eax
mov dword [ebp + 0xc], eax
mov dword [ebp - 4], ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x98], ecx
call fcn.004ceb10
mov ebx, eax
mov esi, edx
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], esi
test eax, eax
je 0x4042e5
movq xmm1, qword [ebp - 0x9c]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + 0xc]
movd xmm0, eax
psrlq xmm1, xmm0
mov dword [ebp - 0x18], ecx
movq qword [ebp - 0x9c], xmm1
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x80], edx
mov dword [ebp - 4], ecx
mov dword [ebp + 0xc], eax
jmp 0x4042f7
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0x80], eax
mov ecx, dword [ebp - 0x20]
add ecx, dword [ebp - 0x2c]
cmp dword [ebp - 0x3c], 0
mov dword [ebp - 0x20], ecx
jne 0x404e08
mov eax, 5
mov dword [ebp + 0xc], 0
xor edx, edx
call fcn.004ceb50
cmp esi, edx
ja 0x404563
jb 0x40432f
cmp ebx, eax
ja 0x404563
xor ebx, ebx
jmp 0x40416a
cmp dword [ebp - 0x3c], 0
lea eax, [edx + ecx]
mov dword [ebp - 0x34], eax
jne 0x404369
test eax, eax
js 0x404369
mov eax, dword [edx*8 + 0x51fa18]
mov edx, dword [edx*8 + 0x51fa1c]
mov dword [ebp + 0xc], 0
call fcn.004ceb50
shrd ebx, esi, 0xb
shr esi, 0xb
jmp 0x40431d
cmp edx, dword [section..data]
jg 0x404389
test eax, eax
js 0x404389
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x14], ecx
jmp 0x404b37
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], eax
jmp 0x40439d
mov edx, dword [ebp - 0x2c]
cmp dword [ebp - 0x3c], 0x1c
jg 0x4055db
shl edx, 4
mov ecx, 0x51d568
sub ecx, edx
mov dword [ebp - 0x48], ecx
mov eax, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov dword [ebp - 0x30], eax
xor eax, eax
push eax
push ebx
push eax
push edi
call fcn.004ceb10
xor eax, eax
mov esi, edx
push eax
push dword [ebp - 0x28]
xor ebx, ebx
push eax
push dword [ebp - 0x30]
call fcn.004ceb10
add esi, eax
adc ebx, edx
xor eax, eax
push eax
push dword [ebp - 0x1c]
push eax
push edi
call fcn.004ceb10
add eax, esi
mov edi, edx
adc edi, 0
xor eax, eax
push eax
push dword [ebp - 0x28]
xor esi, esi
push eax
mov eax, dword [ebp - 0x48]
push dword [eax]
call fcn.004ceb10
add edi, eax
adc esi, edx
add edi, ebx
mov ebx, dword [ebp - 0x1c]
adc esi, 0
xor eax, eax
push eax
push ebx
push eax
push dword [ebp - 0x30]
call fcn.004ceb10
add eax, edi
mov dword [ebp - 0xc], edx
mov edi, edx
mov dword [ebp - 0x4c], eax
adc edi, 0
xor eax, eax
push eax
push ebx
push eax
mov eax, dword [ebp - 0x48]
mov ebx, dword [eax]
push ebx
call fcn.004ceb10
add eax, edi
mov ecx, edx
adc ecx, 0
add eax, esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x70], eax
adc ecx, 0
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x48]
lea esi, [esi - 0x3fe]
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x40], ecx
mov eax, dword [eax + 0xc]
lea esi, [esi + eax]
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x6c], esi
lea eax, [eax - 0x36]
mov ecx, dword [ebp - 0x70]
lea eax, [eax + esi]
mov dword [ebp - 0x54], eax
mov edx, esi
mov dword [ebp - 0x5c], eax
js 0x4044b9
jg 0x404485
test ecx, ecx
jb 0x4044b9
mov eax, dword [ebp - 0x4c]
lea edx, [esi - 1]
mov esi, edx
shld edi, eax, 1
mov dword [ebp - 0x6c], esi
mov esi, dword [ebp - 0x74]
add eax, eax
shld esi, ecx, 1
mov dword [ebp - 0x4c], eax
and edi, 1
add ecx, ecx
xor eax, eax
or ecx, edi
or eax, esi
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x40], eax
jmp 0x4044bc
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0xc8], ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0xc4], eax
cmp ecx, 0x13
jg 0x404797
movq xmm1, qword [ebp - 0x44]
mov eax, 4
sub eax, edx
xor esi, esi
mov edx, dword [ebp - 0x30]
shr edx, 3
movd xmm0, eax
xor eax, eax
shld eax, ebx, 0x1d
psrlq xmm1, xmm0
shl ebx, 0x1d
or esi, eax
or edx, ebx
movq qword [ebp - 0x44], xmm1
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0x98], esi
test ecx, ecx
jne 0x40457c
mov esi, dword [ebp - 0x44]
mov ecx, esi
mov edx, dword [ebp - 0x40]
and ecx, 0xfffffffe
mov eax, edx
and eax, 0x7ffffff
or ecx, eax
je 0x4055db
mov ecx, esi
mov eax, edx
not ecx
not eax
and ecx, 0xfffffffe
and eax, 0x7ffffff
or ecx, eax
je 0x4055db
xor ebx, ebx
mov dword [ebp + 0xc], ebx
cmp edx, 0x50000000
ja 0x404565
jb 0x40416a
test esi, esi
jae 0x404565
jmp 0x40416a
xor ebx, ebx
mov eax, dword [ebp + 0xc]
inc dword [ebp - 0x2c]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x60]
mov byte [eax], 0x31
lea edi, [eax + 1]
jmp 0x405a02
mov ecx, dword [ebp - 0x54]
mov eax, ecx
mov ebx, dword [ebp - 0x40]
neg eax
mov edi, dword [ebp - 0x78]
mov dword [ebp - 0x34], eax
lea eax, [ecx + 0x3f]
mov dword [ebp - 4], 1
mov dword [ebp - 0xa4], eax
lea eax, [ecx - 1]
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x24]
sub eax, ecx
mov dword [ebp + 0xc], 0
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x58], eax
mov eax, ebx
mov dword [ebp - 0x38], ecx
shr eax, 0x1c
and ebx, 0xfffffff
add al, 0x30
mov dword [ebp - 0x44], ecx
mov byte [edi], al
inc edi
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x40], ebx
test eax, eax
jns 0x4048fb
xor eax, eax
sub eax, ecx
mov dword [ebp - 0x10], eax
mov eax, 0x10000000
sbb eax, ebx
cmp dword [ebp - 0x5c], 0
mov dword [ebp - 0x18], eax
jle 0x4046bb
movq xmm1, qword [ebp - 0x9c]
movd xmm0, dword [ebp - 0xa0]
psllq xmm1, xmm0
movq qword [ebp - 0x68], xmm1
cmp ebx, eax
ja 0x404669
jb 0x40461d
cmp ecx, dword [ebp - 0x10]
ja 0x404669
mov eax, dword [ebp - 4]
sub dword [ebp - 0x10], eax
mov edi, dword [ebp - 0x18]
sbb edi, dword [ebp + 0xc]
add eax, ecx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0xc]
adc eax, ebx
cmp eax, edi
mov edi, dword [ebp - 0x78]
ja 0x404797
jb 0x40464c
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x10]
ja 0x404797
cmp ebx, dword [ebp - 0x64]
jb 0x405b84
ja 0x404904
cmp ecx, dword [ebp - 0x68]
jb 0x405b84
jmp 0x404904
mov eax, dword [ebp - 4]
sub ecx, eax
mov dword [ebp - 0xc], ecx
mov ecx, ebx
sbb ecx, dword [ebp + 0xc]
add eax, dword [ebp - 0x10]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp + 0xc]
adc eax, dword [ebp - 0x18]
cmp ecx, eax
jb 0x404797
ja 0x404698
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x78]
jbe 0x404797
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x64]
jb 0x405589
ja 0x404904
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x68]
jb 0x405589
jmp 0x404904
mov eax, dword [ebp - 0xa4]
xor ecx, ecx
bts ecx, eax
xor edi, edi
cmp eax, 0x20
cmovae edi, ecx
xor ecx, edi
mov dword [ebp - 0xc], edi
cmp eax, 0x40
mov eax, edi
mov edi, dword [ebp - 0x78]
cmovae eax, ecx
neg ecx
mov dword [ebp - 0x64], ecx
adc eax, 0
and ecx, dword [ebp - 0x38]
neg eax
mov dword [ebp - 0xc], eax
and eax, ebx
or ecx, eax
jne 0x40473c
movq xmm1, qword [ebp - 0x44]
movd xmm0, dword [ebp - 0x58]
psllq xmm1, xmm0
movq qword [ebp - 0x7c], xmm1
mov ecx, dword [ebp - 0x78]
cmp ecx, esi
ja 0x40473c
mov eax, dword [ebp - 0x7c]
jb 0x404717
cmp eax, edx
jae 0x40473c
cmp dword [ebp - 0x90], 0
je 0x4049f1
shld ecx, eax, 1
add eax, eax
cmp ecx, esi
jb 0x4049f1
ja 0x40473c
cmp eax, edx
jb 0x4049f1
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0xc]
and eax, dword [ebp - 0x10]
and ecx, dword [ebp - 0x18]
or eax, ecx
jne 0x404904
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x34]
call fcn.004ceb50
cmp edx, esi
jb 0x404773
mov edx, dword [ebp - 0x30]
ja 0x404904
cmp eax, edx
jae 0x404904
mov ecx, dword [ebp - 0x24]
sub ecx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
call fcn.004ceb50
cmp edx, esi
jb 0x405589
ja 0x404797
cmp eax, dword [ebp - 0x30]
jb 0x405589
mov eax, dword [ebp - 0x70]
mov ebx, 4
sub ebx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x74]
mov ecx, ebx
mov edi, dword [ebp - 0x60]
call fcn.004cebe0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp + 8], eax
xor eax, eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x1c], eax
mov dword [ebp + 0xc], eax
test ebx, ebx
je 0x404804
movq xmm2, qword [ebp - 0xc8]
mov eax, 0x40
movq xmm1, qword [ebp + 8]
sub eax, ebx
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ebx
psrlq xmm2, 0x20
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [ebp + 8], xmm2
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x48]
xor ecx, ecx
xor esi, esi
mov dword [ebp - 0x30], 4
xorps xmm0, xmm0
mov dword [ebp - 0x38], 0
movlpd qword [ebp - 0xc0], xmm0
mov ebx, dword [eax + 4]
mov eax, dword [eax]
shld ecx, eax, 0x1d
mov edx, dword [ebp - 0xc0]
shl eax, 0x1d
or esi, ecx
mov ecx, dword [ebp - 0x54]
shr ebx, 3
or ebx, eax
mov dword [ebp - 0x88], 1
mov dword [ebp + 0xc], edx
lea eax, [ecx + 0x1f]
mov dword [ebp - 0x74], eax
lea eax, [ecx + 0x3c]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x24]
sub eax, ecx
mov dword [ebp - 8], eax
mov eax, 0xffffffe1
sub eax, ecx
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0x18]
mov eax, ecx
shr eax, 0x1c
and ecx, 0xfffffff
add al, 0x30
mov dword [ebp - 0x98], esi
mov byte [edi], al
inc edi
cmp dword [ebp - 0x3c], 0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x9c], ebx
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x40], ecx
jge 0x4052eb
mov dword [ebp - 0x10], 0
xorps xmm0, xmm0
sub dword [ebp - 0x10], eax
mov eax, 0x10000000
movlpd qword [ebp - 0xc8], xmm0
sbb eax, ecx
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x4c]
or eax, dword [ebp - 0x1c]
je 0x4050c7
xor eax, eax
sub eax, dword [ebp - 0x4c]
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0x24]
sbb eax, dword [ebp - 0x1c]
add dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x34], eax
adc dword [ebp - 0x28], 0xffffffff
jmp 0x4050dc
cmp dword [ebp - 8], eax
je 0x404a80
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 4], eax
mov dword [ebp + 0xc], ecx
shld ecx, eax, 2
shl eax, 2
add dword [ebp - 4], eax
mov eax, dword [ebp - 4]
adc dword [ebp + 0xc], ecx
mov ecx, dword [ebp + 0xc]
shld ecx, eax, 1
add eax, eax
mov dword [ebp + 0xc], ecx
mov dword [ebp - 4], eax
cmp ecx, 0x10000000
ja 0x404797
jb 0x404945
test eax, eax
jae 0x404797
mov eax, dword [ebp - 0x38]
mov ecx, ebx
shld ecx, eax, 2
shl eax, 2
add dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
adc ebx, ecx
mov ecx, esi
shld ebx, eax, 1
add eax, eax
mov dword [ebp - 0x38], eax
mov eax, edx
shld ecx, eax, 2
shl eax, 2
add edx, eax
adc esi, ecx
test esi, esi
jg 0x4049b6
jl 0x40497b
test edx, edx
jae 0x4049b6
add dword [ebp - 0x5c], 4
add dword [ebp - 0xa0], 4
add dword [ebp - 0xa4], 4
sub dword [ebp - 0x34], 4
sub dword [ebp - 0x58], 4
mov ecx, dword [ebp - 0x38]
shrd edx, esi, 3
shr esi, 3
inc dword [ebp - 8]
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0x30], edx
jmp 0x4045b7
add dword [ebp - 0x5c], 3
add dword [ebp - 0xa0], 3
add dword [ebp - 0xa4], 3
sub dword [ebp - 0x34], 3
sub dword [ebp - 0x58], 3
mov ecx, dword [ebp - 0x38]
shrd edx, esi, 2
shr esi, 2
inc dword [ebp - 8]
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0x30], edx
jmp 0x4045b7
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0x38]
mov ecx, dword [ebp + 0xc]
adc ecx, ebx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x64], ecx
mov edx, ecx
mov ecx, dword [ebp - 0x58]
call fcn.004ceb50
cmp edx, esi
ja 0x404797
jb 0x404a1f
cmp eax, dword [ebp - 0x30]
jae 0x404797
mov esi, dword [ebp - 0x18]
cmp esi, ebx
ja 0x404a5a
mov eax, dword [ebp - 0x38]
jb 0x404a30
cmp dword [ebp - 0x10], eax
jae 0x404a5a
mov ecx, dword [ebp - 4]
sub eax, ecx
mov edx, dword [ebp + 0xc]
sbb ebx, edx
add ecx, dword [ebp - 0x10]
adc edx, esi
cmp edx, ebx
ja 0x404797
jb 0x405589
cmp ecx, eax
jae 0x404797
jmp 0x405589
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 4]
sbb esi, dword [ebp + 0xc]
cmp esi, dword [ebp - 0x64]
jb 0x404797
ja 0x405b84
cmp eax, dword [ebp - 0xc]
jb 0x404797
jmp 0x405b84
xor esi, esi
mov eax, 0x10000000
sub esi, ecx
sbb eax, ebx
mov dword [ebp - 0x34], eax
cmp eax, ebx
ja 0x404ae6
jb 0x404a98
cmp esi, ecx
jae 0x404ae6
mov edx, dword [ebp + 0xc]
cmp eax, edx
jb 0x404ac3
mov eax, dword [ebp - 4]
ja 0x404aa8
cmp esi, eax
jbe 0x404ac3
sub ecx, eax
sbb ebx, edx
add eax, esi
adc edx, dword [ebp - 0x34]
cmp ebx, edx
ja 0x405589
jb 0x404ac3
cmp ecx, eax
ja 0x405589
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x2c]
add eax, edx
mov dword [ebp - 0x34], eax
js 0x404797
test edx, edx
js 0x404797
cmp edx, 0x1b
jle 0x404b34
jmp 0x404797
mov edx, dword [ebp + 0xc]
cmp ebx, edx
jb 0x404b12
mov eax, dword [ebp - 4]
ja 0x404af6
cmp ecx, eax
jbe 0x404b12
sub esi, eax
sbb dword [ebp - 0x34], edx
add eax, ecx
adc edx, ebx
cmp dword [ebp - 0x34], edx
ja 0x405b84
jb 0x404b12
cmp esi, eax
ja 0x405b84
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x2c]
add eax, edx
mov dword [ebp - 0x34], eax
js 0x404797
test edx, edx
js 0x404797
cmp edx, 0x1b
jg 0x404797
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x28]
xor ecx, ecx
mov edi, dword [ebp - 0x60]
shrd ebx, esi, 0xb
mov dword [ebp + 0xc], 1
shr esi, 0xb
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 8], 1
test edx, edx
jle 0x404df3
mov ecx, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0xb8], eax
mov eax, dword [edx*8 + 0x51fa18]
mov edx, dword [edx*8 + 0x51fa1c]
call fcn.004ceb50
mov ecx, edx
mov dword [ebp - 0x18], eax
push ecx
push eax
push esi
push ebx
mov dword [ebp - 0x5c], ecx
call fcn.004ceb70
push dword [ebp - 0x5c]
mov edx, edi
mov dword [ebp - 0x1c], eax
push dword [ebp - 0x18]
lea ecx, [eax + 0x30]
mov byte [edx], cl
lea edi, [edx + 1]
cdq
push edx
push eax
call fcn.004ceb10
sub ebx, eax
mov eax, ebx
mov dword [ebp - 0x44], ebx
sbb esi, edx
or eax, esi
mov dword [ebp - 0x40], esi
je 0x405b84
mov ecx, dword [ebp - 0x2c]
mov eax, 1
mov dword [ebp - 8], eax
lea edx, [ecx*8 + 0x51fa18]
mov dword [ebp - 0xc], edx
nop word [eax + eax]
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
jns 0x404ca1
mov eax, dword [ebp - 0x18]
mov edx, ebx
mov ecx, dword [ebp - 0x5c]
sub eax, ebx
mov dword [ebp - 0x50], esi
sbb ecx, esi
mov dword [ebp - 0x24], eax
shld dword [ebp - 0x50], edx, 1
mov dword [ebp - 0x58], ecx
add edx, edx
mov dword [ebp - 0x94], edx
mov edx, dword [ebp - 4]
cmp dword [ebp - 0x50], edx
ja 0x404c80
mov ecx, dword [ebp + 0xc]
jb 0x404c22
cmp dword [ebp - 0x94], ecx
ja 0x404c7d
cmp dword [ebp - 0x90], 0
je 0x404c5c
mov eax, esi
mov edx, ebx
shld eax, edx, 2
shl edx, 2
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 4]
cmp eax, edx
ja 0x404c53
jb 0x404c47
cmp dword [ebp - 0x64], ecx
ja 0x404c53
mov eax, 1
test eax, eax
mov eax, dword [ebp - 0x24]
jmp 0x404c77
xor eax, eax
test eax, eax
mov eax, dword [ebp - 0x24]
jmp 0x404c77
cmp dword [ebp - 0x50], edx
jb 0x405002
ja 0x404c73
cmp dword [ebp - 0x94], ecx
jb 0x405002
test byte [ebp - 0x1c], 1
jne 0x405002
mov ecx, dword [ebp - 0x58]
shld ecx, eax, 1
add eax, eax
cmp ecx, edx
jb 0x405589
ja 0x404c99
cmp eax, dword [ebp + 0xc]
jb 0x405589
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
jmp 0x404ca9
cmp eax, ecx
je 0x404d63
mov ecx, dword [ebp - 0x34]
inc eax
sub edx, 8
mov dword [ebp - 8], eax
dec ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x34], ecx
cmp dword [ebp - 0xb8], eax
jge 0x404d04
mov edx, dword [ebp + 0xc]
mov eax, ebx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
add ebx, eax
mov eax, edx
adc esi, ecx
mov ecx, dword [ebp - 4]
mov dword [ebp - 4], ecx
shld ecx, eax, 2
shld esi, ebx, 1
shl eax, 2
add ebx, ebx
add edx, eax
mov eax, dword [ebp - 4]
adc eax, ecx
mov ecx, dword [ebp - 0x5c]
shld eax, edx, 1
add edx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp + 0xc], edx
jmp 0x404d1f
cmp eax, dword [ebp - 0x2c]
jg 0x404df3
mov eax, dword [edx]
mov edx, dword [edx + 4]
call fcn.004ceb50
mov ecx, edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x5c], ecx
push ecx
push eax
push esi
push ebx
call fcn.004ceb70
push dword [ebp - 0x5c]
mov ecx, eax
push dword [ebp - 0x18]
mov al, cl
mov dword [ebp - 0x1c], ecx
add al, 0x30
mov byte [edi], al
mov eax, ecx
cdq
inc edi
push edx
push eax
call fcn.004ceb10
sub ebx, eax
mov eax, ebx
mov dword [ebp - 0x44], ebx
sbb esi, edx
mov edx, dword [ebp - 0xc]
or eax, esi
mov dword [ebp - 0x40], esi
mov eax, dword [ebp - 8]
jne 0x404be0
jmp 0x405b84
call fcn.004d3209
sub eax, 0
je 0x405b84
sub eax, 2
je 0x405589
mov ecx, dword [ebp - 0x5c]
mov edx, ebx
mov eax, esi
shld eax, edx, 1
add edx, edx
mov dword [ebp - 0xc], eax
cmp eax, ecx
ja 0x405589
mov eax, dword [ebp - 0x18]
jb 0x404d9f
cmp edx, eax
ja 0x405589
cmp edx, eax
jne 0x404db2
cmp dword [ebp - 0xc], ecx
jne 0x404db2
test byte [ebp - 0x1c], 1
jne 0x405589
cmp dword [ebp - 0x90], 0
je 0x405b84
mov ecx, dword [ebp - 4]
cmp esi, ecx
ja 0x405b84
mov eax, dword [ebp + 0xc]
jb 0x404dd7
cmp ebx, eax
ja 0x405b84
cmp dword [ebp - 0xc], ecx
ja 0x405589
jb 0x405b84
cmp edx, eax
jae 0x405589
jmp 0x405b84
mov eax, dword [ebp - 0xbc]
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0x80], eax
movq xmm1, qword [ebp - 0x44]
movd xmm0, ecx
psrlq xmm1, xmm0
movq qword [ebp - 0xac], xmm1
mov ecx, dword [ebp - 0xac]
mov al, cl
mov edx, dword [ebp - 0xa8]
add al, 0x30
mov byte [edi], al
inc edi
mov dword [ebp - 0x1c], ecx
mov eax, ecx
mov ecx, dword [ebp - 0x20]
call fcn.004ceb50
sub ebx, eax
mov eax, ebx
sbb esi, edx
or eax, esi
je 0x405b84
nop dword [eax + eax]
mov eax, ebx
mov ecx, esi
shld ecx, eax, 1
add eax, eax
mov dword [ebp - 0x50], ecx
cmp dword [ebp - 0x3c], 0
mov dword [ebp - 0x48], eax
jge 0x404f19
mov eax, dword [ebp - 0x20]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, ecx
mov dword [ebp - 0x24], ecx
cmovae edx, eax
sub eax, ebx
mov dword [ebp - 0x24], eax
sbb edx, esi
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 4]
cmp dword [ebp - 0x50], edx
ja 0x404efb
mov ecx, dword [ebp + 0xc]
jb 0x404ea3
cmp dword [ebp - 0x48], ecx
ja 0x404efb
cmp dword [ebp - 0x90], 0
je 0x404edd
mov eax, esi
mov ecx, ebx
shld eax, ecx, 2
shl ecx, 2
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp + 0xc]
cmp eax, edx
ja 0x404ed4
jb 0x404ec8
cmp dword [ebp - 0x64], ecx
ja 0x404ed4
mov eax, 1
test eax, eax
mov eax, dword [ebp - 0x24]
jmp 0x404ef5
xor eax, eax
test eax, eax
mov eax, dword [ebp - 0x24]
jmp 0x404ef5
cmp dword [ebp - 0x50], edx
jb 0x405002
ja 0x404ef1
cmp dword [ebp - 0x48], ecx
jb 0x405002
test byte [ebp - 0x1c], 1
jne 0x405002
mov ecx, dword [ebp - 0x58]
shld ecx, eax, 1
add eax, eax
cmp ecx, edx
jb 0x405589
ja 0x404f1f
cmp eax, dword [ebp + 0xc]
jb 0x405589
jmp 0x404f1f
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
dec ecx
mov dword [ebp - 0x20], ecx
cmp eax, dword [ebp - 0x3c]
je 0x405036
mov edx, dword [ebp + 0xc]
inc eax
mov dword [ebp - 8], eax
mov ecx, esi
mov eax, ebx
shld ecx, eax, 2
shl eax, 2
add ebx, eax
mov eax, edx
mov dword [ebp - 0x44], ebx
adc esi, ecx
mov ecx, dword [ebp - 4]
shld ecx, eax, 2
mov dword [ebp - 0x40], esi
shl eax, 2
add edx, eax
mov eax, dword [ebp - 4]
adc eax, ecx
cmp dword [ebp - 0x88], 0
mov ecx, edx
mov dword [ebp - 0x64], eax
mov dword [ebp + 0xc], ecx
je 0x404fb3
mov edx, dword [ebp - 0x14]
and edx, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x8c]
mov eax, edx
and ecx, dword [ebp - 0x18]
mov dword [ebp - 0x18], ecx
shld ecx, eax, 2
shl eax, 2
add edx, eax
mov dword [ebp - 0x80], edx
mov eax, edx
adc dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x88]
call fcn.004cebe0
add eax, dword [ebp + 0xc]
mov dword [ebp + 0xc], eax
adc edx, dword [ebp - 0x64]
mov dword [ebp - 4], edx
jmp 0x404fb9
mov dword [ebp + 0xc], ecx
mov dword [ebp - 4], eax
movq xmm1, qword [ebp - 0x44]
movd xmm0, dword [ebp - 0x20]
psrlq xmm1, xmm0
movq qword [ebp - 0xac], xmm1
mov ecx, dword [ebp - 0xac]
mov al, cl
mov edx, dword [ebp - 0xa8]
add al, 0x30
mov byte [edi], al
inc edi
mov dword [ebp - 0x1c], ecx
mov eax, ecx
mov ecx, dword [ebp - 0x20]
call fcn.004ceb50
sub ebx, eax
mov eax, ebx
sbb esi, edx
or eax, esi
jne 0x404e50
jmp 0x405b84
mov ecx, dword [ebp - 0x58]
cmp ecx, esi
jb 0x405589
ja 0x405017
cmp eax, ebx
jb 0x405589
cmp eax, ebx
jne 0x405b84
cmp ecx, esi
jne 0x405b84
test byte [ebp - 0x1c], 1
jne 0x405589
jmp 0x405b84
xor eax, eax
xor edx, edx
bts eax, ecx
cmp ecx, 0x20
cmovae edx, eax
xor eax, edx
mov dword [ebp - 0x14], edx
cmp ecx, 0x40
mov dword [ebp - 0x64], eax
mov ecx, edx
mov edx, dword [ebp - 4]
cmovae ecx, eax
mov dword [ebp - 0x14], ecx
mov ecx, eax
mov eax, dword [ebp - 0x14]
and ecx, ebx
and eax, esi
or ecx, eax
je 0x405088
test byte [ebp - 0x1c], 1
jne 0x405589
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x14]
add eax, 0xffffffff
adc ecx, 0xffffffff
and eax, ebx
and ecx, esi
or eax, ecx
jne 0x405589
cmp dword [ebp - 0x90], 0
je 0x405b84
cmp esi, edx
ja 0x405b84
mov eax, dword [ebp + 0xc]
jb 0x4050aa
cmp ebx, eax
ja 0x405b84
cmp dword [ebp - 0x50], edx
ja 0x405589
jb 0x405b84
cmp dword [ebp - 0x48], eax
jae 0x405589
jmp 0x405b84
mov eax, dword [ebp - 0xc4]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0xc8]
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0x54]
test eax, eax
jg 0x40545e
mov eax, dword [ebp - 0x48]
xor edi, edi
bts edi, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, edi
xor edi, edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0xc], edi
cmp eax, 0x40
mov eax, edi
mov edi, edx
mov edx, dword [ebp + 0xc]
cmovae edi, eax
neg eax
mov dword [ebp - 0xc], eax
adc edi, 0
neg edi
mov dword [ebp - 0x14], edi
mov edi, edx
add edi, dword [ebp - 0x20]
mov dword [ebp - 0x8c], edi
mov edi, dword [ebp - 4]
adc edi, ecx
mov ecx, eax
and ecx, dword [ebp - 0x8c]
mov dword [ebp - 0xa0], edi
mov edi, dword [ebp - 0x14]
and edi, dword [ebp - 0xa0]
or ecx, edi
mov edi, dword [ebp - 0x78]
jne 0x40528f
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
sub eax, edx
mov dword [ebp - 0x58], eax
sbb ecx, dword [ebp - 4]
mov dword [ebp - 0x5c], ecx
mov edx, ecx
mov ecx, dword [ebp - 8]
call fcn.004ceb50
cmp edx, esi
ja 0x40528c
jb 0x405178
cmp eax, ebx
jae 0x40528c
cmp dword [ebp - 0x90], 0
je 0x405199
shld edx, eax, 1
add eax, eax
cmp edx, esi
ja 0x40528c
jb 0x405199
cmp eax, ebx
jae 0x40528c
mov eax, dword [ebp - 0x30]
add eax, dword [ebp - 0x4c]
movq xmm1, qword [ebp - 0x44]
movd xmm0, dword [ebp - 8]
mov edx, dword [ebp - 0x38]
adc edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x74]
psllq xmm1, xmm0
movq qword [ebp - 0x7c], xmm1
test ecx, ecx
jle 0x4051c6
call fcn.004cebe0
jmp 0x4051ce
mov ecx, dword [ebp - 0x70]
call fcn.004ceb50
mov ecx, dword [ebp - 0x7c]
add ecx, eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 8]
adc eax, edx
mov edx, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 0xc]
call fcn.004ceb50
mov ecx, eax
mov eax, dword [ebp - 0xc]
add ecx, eax
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x14]
adc edx, ecx
cmp edx, esi
ja 0x4055db
jb 0x40520e
cmp dword [ebp - 0x64], ebx
jae 0x4055db
cmp ecx, esi
jb 0x405220
ja 0x4052fd
cmp eax, ebx
jae 0x4052fd
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x10]
cmp ebx, eax
jb 0x405437
mov ecx, dword [ebp - 0x20]
ja 0x40523e
cmp edx, ecx
jb 0x405437
cmp edx, ecx
jne 0x405263
cmp ebx, eax
jne 0x405263
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x1c]
jb 0x405437
ja 0x405263
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x4c]
jb 0x405437
sub edx, dword [ebp + 0xc]
sbb ebx, dword [ebp - 4]
cmp ebx, dword [ebp - 0xa0]
jb 0x4055db
ja 0x405b84
cmp edx, dword [ebp - 0x8c]
jbe 0x4055db
jmp 0x405b84
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
and eax, dword [ebp - 0x10]
and ecx, dword [ebp - 0x28]
or eax, ecx
jne 0x4052fd
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
sub eax, edx
mov edx, dword [ebp - 0x28]
sbb edx, dword [ebp - 4]
call fcn.004ceb50
cmp edx, esi
jb 0x4052bc
ja 0x4052fd
cmp eax, ebx
jae 0x4052fd
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x10]
mov edx, dword [ebp - 4]
adc edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 8]
call fcn.004ceb50
cmp edx, esi
jb 0x405589
ja 0x4055db
cmp eax, ebx
jb 0x405589
jmp 0x4055db
mov edi, dword [ebp - 0x88]
cmp edi, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x78]
je 0x40550a
mov edx, dword [ebp - 0x38]
mov ecx, edx
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x30], eax
shld ecx, eax, 2
shl eax, 2
add dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x30]
adc edx, ecx
mov ecx, dword [ebp - 4]
shld edx, eax, 1
add eax, eax
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x30], eax
xor edx, edx
mov eax, dword [ebp + 0xc]
shld ecx, eax, 2
shl eax, 2
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
adc dword [ebp - 4], ecx
mov ecx, dword [ebp - 4]
shld ecx, eax, 1
add eax, eax
add dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
adc ecx, edx
mov dword [ebp + 0xc], eax
mov dword [ebp - 0xc0], eax
mov dword [ebp - 4], ecx
mov dword [ebp - 0xbc], ecx
mov dword [ebp - 0x38], edx
cmp ecx, 0x10000000
ja 0x4055db
jb 0x405377
test eax, eax
jae 0x4055db
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x1c]
mov ecx, edx
mov dword [ebp - 0x4c], eax
shld ecx, eax, 2
mov dword [ebp - 0x1c], 0
shl eax, 2
add dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x4c]
adc edx, ecx
mov ecx, dword [ebp - 0x18]
shld edx, eax, 1
add eax, eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x4c], eax
xor edx, edx
mov eax, dword [ebp - 0x20]
shld ecx, eax, 2
shl eax, 2
add dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x18]
adc eax, ecx
mov ecx, dword [ebp - 0x20]
shld eax, ecx, 1
add ecx, ecx
add dword [ebp - 0x14], ecx
mov ecx, esi
adc edx, eax
mov eax, ebx
shld ecx, eax, 2
mov dword [ebp - 0x18], edx
shl eax, 2
add ebx, eax
adc esi, ecx
test esi, esi
jg 0x40540e
jl 0x4053e5
test ebx, ebx
jae 0x40540e
add dword [ebp - 0x54], 4
add dword [ebp - 0x48], 4
add dword [ebp - 0x74], 4
sub dword [ebp - 0x70], 4
sub dword [ebp - 8], 4
mov edx, dword [ebp + 0xc]
shrd ebx, esi, 3
shr esi, 3
inc dword [ebp - 0x88]
jmp 0x404874
add dword [ebp - 0x54], 3
add dword [ebp - 0x48], 3
add dword [ebp - 0x74], 3
sub dword [ebp - 0x70], 3
sub dword [ebp - 8], 3
mov edx, dword [ebp + 0xc]
shrd ebx, esi, 2
shr esi, 2
inc dword [ebp - 0x88]
jmp 0x404874
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 4]
add eax, edx
adc ecx, ebx
cmp ecx, dword [ebp - 0x5c]
ja 0x4055db
jb 0x405589
cmp eax, dword [ebp - 0x58]
jae 0x4055db
jmp 0x405589
movq xmm1, qword [ebp - 0x9c]
dec eax
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x10]
movd xmm0, eax
mov eax, dword [ebp - 0x28]
psllq xmm1, xmm0
movq xmm0, qword [ebp - 0xc0]
psubq xmm1, xmm0
movq qword [ebp - 0x68], xmm1
cmp ecx, eax
ja 0x4054cf
jb 0x405493
cmp ebx, esi
ja 0x4054cf
cmp ecx, dword [ebp - 0x64]
ja 0x4055db
jb 0x4054a7
cmp ebx, dword [ebp - 0x68]
jae 0x4055db
mov eax, dword [ebp - 4]
sub esi, edx
sbb dword [ebp - 0x28], eax
add edx, ebx
adc eax, ecx
cmp eax, dword [ebp - 0x28]
jb 0x405b84
ja 0x4055db
cmp edx, esi
jb 0x405b84
jmp 0x4055db
cmp eax, dword [ebp - 0x64]
ja 0x4055db
jb 0x4054e3
cmp esi, dword [ebp - 0x68]
jae 0x4055db
mov eax, dword [ebp - 4]
sub ebx, edx
sbb ecx, eax
add edx, esi
adc eax, dword [ebp - 0x28]
cmp ecx, eax
ja 0x405589
jb 0x4055db
cmp ebx, edx
ja 0x405589
jmp 0x4055db
mov ebx, dword [ebp - 0x4c]
xor esi, esi
sub esi, eax
xorps xmm0, xmm0
mov eax, 0x10000000
mov dword [ebp - 0x14], esi
sbb eax, ecx
movlpd qword [ebp - 0x7c], xmm0
mov dword [ebp + 0xc], eax
mov eax, ebx
or eax, dword [ebp - 0x1c]
je 0x40554b
add esi, 0xffffffff
mov dword [ebp - 0x14], esi
adc dword [ebp + 0xc], 0xffffffff
mov esi, dword [ebp - 0x30]
add esi, ebx
mov ebx, dword [ebp - 0x38]
adc ebx, dword [ebp - 0x1c]
shrd esi, ebx, 0x1f
shr ebx, 0x1f
jmp 0x405551
mov ebx, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 4]
shld eax, edx, 1
add edx, edx
add esi, edx
mov edx, dword [ebp - 0x14]
adc ebx, eax
mov eax, dword [ebp - 0x20]
cmp dword [ebp + 0xc], ecx
ja 0x4055b8
jb 0x40556f
cmp edx, eax
ja 0x4055b8
cmp dword [ebp + 0xc], ebx
jb 0x4055db
ja 0x40557a
cmp edx, esi
jbe 0x4055db
sub eax, edx
sbb ecx, dword [ebp + 0xc]
cmp ecx, ebx
jb 0x4055db
ja 0x405589
cmp eax, esi
jbe 0x4055db
mov al, byte [edi - 1]
dec edi
cmp al, 0x39
jne 0x40559e
cmp edi, dword [ebp - 0x60]
je 0x4055a8
mov al, byte [edi - 1]
dec edi
cmp al, 0x39
je 0x405591
inc al
mov byte [edi], al
inc edi
jmp 0x405bc8
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x60]
inc eax
mov byte [edi], 0x31
inc edi
jmp 0x405bce
cmp ecx, ebx
jb 0x4055db
ja 0x4055c2
cmp eax, esi
jbe 0x4055db
sub edx, eax
mov eax, dword [ebp + 0xc]
sbb eax, ecx
cmp eax, ebx
ja 0x405b84
jb 0x4055db
cmp edx, esi
ja 0x405b84
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0xac]
push eax
call fcn.00403b00
mov ecx, dword [ebp - 0xa8]
add esp, 0xc
mov edx, dword [ebp - 0x80]
mov esi, eax
mov edi, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x24]
shr ecx, 0x14
and ecx, 0x7ff
mov dword [ebp - 0x84], esi
sub ecx, 0x3ff
test edx, edx
je 0x405622
mov eax, ebx
sub eax, edx
add ecx, eax
mov eax, dword [ebp + 0xc]
xor edx, edx
sub eax, ecx
test eax, eax
lea ecx, [eax - 1]
cmovle ecx, edx
sub ebx, eax
test eax, eax
mov dword [ebp - 8], ecx
cmovle edx, ebx
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x54], edx
test ebx, ebx
js 0x405656
add ecx, ebx
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x14], ebx
mov dword [ebp - 8], ecx
jmp 0x405667
mov eax, ebx
sub edx, ebx
neg eax
mov dword [ebp - 0x54], edx
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 0x14], eax
xor eax, eax
mov dword [ebp - 0x24], edx
xor ebx, ebx
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0xb0], eax
je 0x4056bd
cmp dword [ebp - 0xb8], eax
je 0x40568b
mov eax, dword [ebp - 0x6c]
add eax, 0x433
jmp 0x405693
mov eax, 0x36
sub eax, dword [ebp + 0xc]
add edx, eax
add ecx, eax
push 1
mov dword [ebp - 0x54], edx
mov dword [ebp - 8], ecx
call fcn.004015e0
mov ecx, dword [ebp - 8]
mov ebx, eax
mov edx, dword [ebp - 0x54]
add esp, 4
mov dword [ebx + 0x14], 1
mov dword [ebx + 0x10], 1
cmp dword [ebp - 0x24], 0
jle 0x4056dd
test ecx, ecx
jle 0x4056dd
cmp dword [ebp - 0x24], ecx
mov eax, ecx
cmovl eax, dword [ebp - 0x24]
sub dword [ebp - 0x24], eax
sub edx, eax
sub ecx, eax
mov dword [ebp - 0x54], edx
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 0xc]
test eax, eax
jle 0x405752
cmp dword [ebp - 0xb0], 0
push eax
je 0x405741
push ebx
call fcn.00406740
mov ebx, eax
push esi
push ebx
call fcn.00406510
add esp, 0x10
mov edx, eax
mov dword [ebp + 0xc], edx
test esi, esi
je 0x405737
mov ecx, dword [esi + 4]
cmp ecx, 7
jle 0x405727
push esi
call fcn.004d2dae
mov edx, dword [ebp + 0xc]
add esp, 4
mov esi, edx
mov dword [ebp - 0x84], esi
jmp 0x405752
mov eax, dword [ecx*4 + 0x533b40]
mov dword [esi], eax
mov dword [ecx*4 + 0x533b40], esi
mov esi, edx
mov dword [ebp - 0x84], esi
jmp 0x405752
push esi
call fcn.00406740
add esp, 8
mov dword [ebp - 0x84], eax
mov esi, eax
push 1
call fcn.004015e0
mov ecx, eax
add esp, 4
mov eax, dword [ebp - 0x14]
mov dword [ebp + 0xc], ecx
mov dword [ecx + 0x14], 1
mov dword [ecx + 0x10], 1
test eax, eax
jle 0x405785
push eax
push ecx
call fcn.00406740
add esp, 8
mov dword [ebp + 0xc], eax
mov ecx, eax
cmp dword [ebp - 0x90], 0
je 0x405794
inc dword [ebp - 0x54]
inc dword [ebp - 8]
mov eax, dword [ecx + 0x10]
push dword [ecx + eax*4 + 0x10]
call fcn.004062d0
mov edx, dword [ebp - 8]
add eax, 0xfffffffc
mov ecx, eax
add esp, 4
sub ecx, edx
test edx, edx
cmovle ecx, eax
mov eax, dword [ebp - 0x54]
and ecx, 0x1f
add dword [ebp - 0x24], ecx
add eax, ecx
add edx, ecx
mov dword [ebp - 8], edx
test eax, eax
jle 0x4057db
push eax
push esi
call fcn.00406410
mov edx, dword [ebp - 8]
mov esi, eax
add esp, 8
mov dword [ebp - 0x84], esi
test edx, edx
jle 0x4057f2
push edx
push dword [ebp + 0xc]
call fcn.00406410
mov ecx, eax
add esp, 8
mov dword [ebp + 0xc], ecx
jmp 0x4057f5
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x3c]
test eax, eax
jg 0x405844
mov edx, dword [ebp - 0xb4]
cmp edx, 3
je 0x40580c
cmp edx, 5
jne 0x405844
test eax, eax
js 0x404170
push 0
push 5
push ecx
call fcn.00406660
push eax
push esi
mov dword [ebp + 0xc], eax
call fcn.00403aa0
add esp, 0x14
test eax, eax
jle 0x404170
mov eax, dword [ebp - 0x60]
inc dword [ebp - 0x2c]
mov byte [eax], 0x31
lea edi, [eax + 1]
jmp 0x405a02
cmp dword [ebp - 0xb0], 0
je 0x405a77
mov eax, dword [ebp - 0x24]
test eax, eax
jle 0x405864
push eax
push ebx
call fcn.00406410
add esp, 8
mov ebx, eax
cmp dword [ebp - 0x90], 0
mov dword [ebp - 0x10], ebx
je 0x4058a7
push dword [ebx + 4]
call fcn.004015e0
mov esi, eax
mov eax, ebx
mov ecx, dword [eax + 0x10]
lea ecx, [ecx*4 + 8]
push ecx
lea ecx, [eax + 0xc]
push ecx
lea ecx, [esi + 0xc]
push ecx
call fcn.004cfba0
push 1
push esi
call fcn.00406410
mov esi, dword [ebp - 0x84]
add esp, 0x18
mov ebx, eax
mov dword [ebp - 0xc], 1
nop
push dword [ebp + 0xc]
push esi
call fcn.00406810
add eax, 0x30
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
push eax
push esi
call fcn.00403aa0
push ebx
push dword [ebp + 0xc]
mov dword [ebp - 0xb4], eax
call fcn.00403c30
mov ecx, eax
add esp, 0x18
mov dword [ebp - 0x64], ecx
cmp dword [ecx + 0xc], 0
je 0x4058f2
mov dword [ebp - 0xb8], 1
jmp 0x405905
push ecx
push esi
call fcn.00403aa0
mov ecx, dword [ebp - 0x64]
add esp, 8
mov dword [ebp - 0xb8], eax
mov edx, dword [ecx + 4]
cmp edx, 7
jle 0x405918
push ecx
call fcn.004d2dae
add esp, 4
jmp 0x405928
mov eax, dword [edx*4 + 0x533b40]
mov dword [ecx], eax
mov dword [edx*4 + 0x533b40], ecx
mov eax, dword [ebp - 0xb8]
mov edx, dword [ebp - 0xac]
test eax, eax
jne 0x40594a
cmp dword [ebp - 0x94], 1
je 0x40594a
test dl, 1
je 0x4059dc
mov ecx, dword [ebp - 0xb4]
test ecx, ecx
js 0x405a27
jne 0x40596c
cmp dword [ebp - 0x94], 1
je 0x40596c
test dl, 1
je 0x405a27
test eax, eax
jg 0x4059f5
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov byte [edi], cl
inc edi
cmp eax, dword [ebp - 0x3c]
je 0x405ac8
push 0
push 0xa
push esi
call fcn.00406660
add esp, 0xc
mov esi, eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x84], esi
push 0
push 0xa
cmp eax, ebx
jne 0x4059bc
push ebx
call fcn.00406660
mov ebx, eax
add esp, 0xc
inc dword [ebp - 0xc]
mov dword [ebp - 0x10], ebx
jmp 0x4058b0
push eax
call fcn.00406660
push 0
push 0xa
push ebx
mov dword [ebp - 0x10], eax
call fcn.00406660
add esp, 0x18
mov ebx, eax
inc dword [ebp - 0xc]
jmp 0x4058b0
mov eax, dword [ebp - 8]
cmp eax, 0x39
je 0x405a67
mov ecx, dword [ebp - 0xb4]
test ecx, ecx
jle 0x4059ff
inc eax
jmp 0x4059ff
mov eax, dword [ebp - 8]
cmp eax, 0x39
je 0x405a67
inc al
mov byte [edi], al
inc edi
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x405b2f
mov edx, dword [ecx + 4]
cmp edx, 7
jle 0x405b1f
push ecx
call fcn.004d2dae
add esp, 4
jmp 0x405b2f
cmp dword [esi + 0x14], 0
jne 0x405a33
cmp dword [esi + 0x10], 1
jle 0x405a70
test eax, eax
jle 0x405a70
push 1
push esi
call fcn.00406410
push dword [ebp + 0xc]
mov dword [ebp - 0x84], eax
push eax
call fcn.00403aa0
mov ecx, dword [ebp - 8]
add esp, 0x10
test eax, eax
jg 0x405a5f
jne 0x405a73
test cl, 1
je 0x405a73
mov eax, ecx
inc ecx
cmp eax, 0x39
jne 0x405a73
mov byte [edi], 0x39
inc edi
jmp 0x405af6
mov ecx, dword [ebp - 8]
mov byte [edi], cl
jmp 0x405a01
mov dword [ebp - 0xc], 1
nop
push ecx
push esi
call fcn.00406810
add eax, 0x30
add esp, 8
mov byte [edi], al
inc edi
cmp dword [esi + 0x14], 0
mov dword [ebp - 8], eax
jne 0x405aa3
cmp dword [esi + 0x10], 1
jle 0x405a02
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x3c]
jge 0x405ac8
push 0
push 0xa
push esi
call fcn.00406660
mov ecx, dword [ebp + 0xc]
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x84], esi
inc dword [ebp - 0xc]
jmp 0x405a80
push 1
push esi
call fcn.00406410
push dword [ebp + 0xc]
mov dword [ebp - 0x84], eax
push eax
call fcn.00403aa0
add esp, 0x10
test eax, eax
jg 0x405af6
jne 0x405a02
test byte [ebp - 8], 1
je 0x405a02
mov al, byte [edi - 1]
dec edi
cmp al, 0x39
jne 0x4059fd
cmp edi, dword [ebp - 0x60]
je 0x405b14
mov al, byte [edi - 1]
dec edi
cmp al, 0x39
je 0x405b02
jmp 0x4059fd
inc dword [ebp - 0x2c]
mov byte [edi], 0x31
jmp 0x405a01
mov eax, dword [edx*4 + 0x533b40]
mov dword [ecx], eax
mov dword [edx*4 + 0x533b40], ecx
test ebx, ebx
je 0x405b84
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x405b61
cmp ecx, ebx
je 0x405b61
mov edx, dword [ecx + 4]
cmp edx, 7
jle 0x405b51
push ecx
call fcn.004d2dae
add esp, 4
jmp 0x405b61
mov eax, dword [edx*4 + 0x533b40]
mov dword [ecx], eax
mov dword [edx*4 + 0x533b40], ecx
mov ecx, dword [ebx + 4]
cmp ecx, 7
jle 0x405b74
push ebx
call fcn.004d2dae
add esp, 4
jmp 0x405b84
mov eax, dword [ecx*4 + 0x533b40]
mov dword [ebx], eax
mov dword [ecx*4 + 0x533b40], ebx
mov edx, dword [ebp - 0x60]
cmp edi, edx
jbe 0x405b9b
nop dword [eax + eax]
cmp byte [edi - 1], 0x30
jne 0x405b9b
dec edi
cmp edi, edx
ja 0x405b90
mov ecx, dword [ebp - 0x84]
test ecx, ecx
je 0x405bcb
mov edx, dword [ecx + 4]
cmp edx, 7
jle 0x405bb8
push ecx
call fcn.004d2dae
add esp, 4
jmp 0x405bc8
mov eax, dword [edx*4 + 0x533b40]
mov dword [ecx], eax
mov dword [edx*4 + 0x533b40], ecx
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x2c]
lea ecx, [eax + 1]
mov byte [edi], 0
mov eax, dword [ebp + 0x18]
mov dword [eax], ecx
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x405be2
mov dword [eax], edi
pop ebx
pop edi
mov eax, edx
pop esi
mov esp, ebp
pop ebp
ret