Function at 0x401000
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x270
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x24], eax
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
lea eax, [esp + 0x26c]
not eax
mov dword [esp + 0x5c], eax
mov ebx, dword [ebp + 8]
mov dword [esp + 0x50], 0
mov edi, esi
jmp 0x40104a
mov ecx, esi
mov esi, dword [esp + 0x2c]
mov byte [esi], al
inc esi
inc ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], edi
mov esi, ecx
test cl, 3
je 0x401060
movzx eax, byte [ecx]
jmp 0x401091
mov eax, dword [ecx]
mov ecx, eax
not ecx
and ecx, 0x80808080
mov edx, eax
xor edx, 0x25252525
mov edi, 0x1010100
sub edi, edx
add edx, 0xfefefeff
or edi, eax
not edi
and edx, ecx
and edi, 0x80808080
or edi, edx
je 0x4010e0
cmp al, 0x25
je 0x40115a
test al, al
mov edi, dword [esp + 0x20]
je 0x403612
test ebx, ebx
je 0x401040
mov ecx, dword [esp + 0x2c]
sub ecx, edi
lea edx, [ecx + 1]
cmp edx, 0x200
jl 0x401040
add dword [esp + 0x50], ecx
push ecx
push dword [ebp + 0xc]
push edi
call ebx
add esp, 0xc
test eax, eax
je 0x403634
mov ecx, esi
movzx edx, byte [esi]
mov edi, eax
mov esi, eax
mov eax, edx
jmp 0x401046
mov edx, dword [esp + 0x20]
sub edx, dword [esp + 0x2c]
add edx, 0x200
jmp 0x40113e
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [eax], ecx
add eax, 4
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 4]
add esi, 4
mov ecx, eax
not ecx
and ecx, 0x80808080
mov edi, eax
xor edi, 0x25252525
mov ebx, 0x1010100
sub ebx, edi
add edi, 0xfefefeff
or ebx, eax
not ebx
and edi, ecx
and ebx, 0x80808080
add edx, 0xfffffffc
or ebx, edi
mov ebx, dword [ebp + 8]
jne 0x401091
lea edi, [eax - 0x1010101]
test ecx, edi
jne 0x401099
test ebx, ebx
je 0x4010f0
cmp edx, 4
jge 0x4010f0
jmp 0x401091
add esi, 2
mov dword [esp + 4], 0
mov ecx, esi
mov esi, dword [esp + 0x2c]
jmp 0x401180
or dword [esp + 4], 1
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x401190.33
jmp dword [edx*4 + 0x44b564]
or dword [esp + 4], 4
inc ecx
jmp 0x401180
or dword [esp + 4], 8
inc ecx
jmp 0x401180
or dword [esp + 4], 0x400
inc ecx
jmp 0x401180
or dword [esp + 4], 0x40
inc ecx
jmp 0x401180
test dword [esp + 4], 0x100
jne 0x4011e6
or dword [esp + 4], 0x100
inc ecx
jmp 0x401180
mov edx, dword [esp + 4]
mov eax, edx
not eax
or eax, 0xfffffffd
add edx, eax
add edx, 3
mov dword [esp + 4], edx
inc ecx
jmp 0x401180
test dword [esp + 4], 0x800
jne 0x4011fb
or dword [esp + 4], 0x800
inc ecx
jmp 0x401180
or dword [esp + 4], 0x1000
inc ecx
jmp 0x401180
or dword [esp + 4], 0x10
movzx eax, byte [ecx]
jmp 0x401214
dec ecx
cmp al, 0x2a
mov edi, dword [esp + 0x20]
jne 0x401234
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x34], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401278
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x34], 0
cmp dl, 9
ja 0x401278
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [ebx + ebx*4]
lea ebx, [eax + edx*2]
mov eax, ebx
not eax
and eax, 0x30
and ebx, 0xffffffcf
sub ebx, eax
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401250
mov dword [esp + 0x34], ebx
mov dword [esp + 0x10], 0xffffffff
cmp al, 0x2e
jne 0x4012df
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x4012a6
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x10], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x4012df
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x10], 0
cmp dl, 9
ja 0x4012df
xor ebx, ebx
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [ebx + ebx*4]
lea ebx, [eax + edx*2]
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x4012c0
mov dword [esp + 0x10], ebx
movzx edx, al
add edx, 0xffffffb7
cmp edx, 0x31
ja case.0x4012ea.74
jmp dword [edx*4 + 0x44b664]
inc ecx
mov dword [esp + 0x4c], ecx
movzx eax, byte [ecx]
jmp 0x401363
movzx eax, byte [ecx + 1]
cmp al, 0x6c
jne 0x40135e
add ecx, 2
or dword [esp + 4], 0x20
jmp 0x4012f2
lea eax, [ecx + 1]
mov dword [esp + 0x4c], eax
movzx eax, byte [ecx + 1]
cmp eax, 0x33
je 0x401b13
cmp eax, 0x36
jne 0x401363
cmp byte [ecx + 2], 0x34
jne 0x401b1d
mov edx, dword [esp + 4]
mov eax, edx
xor eax, 0x20
add eax, edx
and edx, 0xffffffdf
sub eax, edx
add ecx, 3
mov dword [esp + 4], eax
jmp 0x4012f2
cmp byte [ecx + 1], 0x68
je 0x40171a
inc ecx
or dword [esp + 4], 0x200
jmp 0x4012f2
inc ecx
mov dword [esp + 0x4c], ecx
movzx ecx, al
add ecx, 0xffffffbf
cmp ecx, 0x37
ja case.0x401372.67
jmp dword [ecx*4 + 0x44b72c]
test byte [esp + 4], 0x20
jne 0x4016dc
mov ecx, dword [esp + 0x24]
mov edi, dword [ecx]
add ecx, 4
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], 0
cmp al, 0x75
je 0x4020b3
test edi, edi
mov edx, dword [esp + 0x10]
jns 0x4020b7
neg edi
or dword [esp + 4], 0x80
jmp 0x4020b7
mov ecx, str.0123456789ABCDEFXP
cmp al, 0x45
je 0x4013ca
mov ecx, str.0123456789abcdefxp
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x24]
fld qword [eax]
mov edi, 6
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x4013e4
mov edi, eax
mov eax, edi
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
lea ecx, [esp + 0x24]
lea edx, [esp + 0x34]
call fcn.00403660
add esp, 0x18
test eax, eax
je 0x401424
or dword [esp + 4], 0x80
add dword [esp + 0x24], 8
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
cmp byte [esp + 4], 0
js 0x401457
mov edx, dword [esp + 4]
mov ecx, edx
or ecx, 4
xor edx, 0xfffffffb
mov al, 0x20
test ecx, edx
jne 0x401457
mov al, 0x2b
test byte [esp + 4], 2
je 0x401460
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ebx, dword [esp + 0x40]
xor eax, eax
mov edx, dword [esp + 0xc]
cmp ebx, 0x7000
je 0x402ad9
mov dword [esp + 8], edx
movzx ecx, byte [edx]
mov byte [esp + 0xac], cl
lea eax, [esp + 0xad]
test edi, edi
je 0x4014a7
movzx ecx, byte [section..data]
xor cl, 0xa2
mov byte [esp + 0xad], cl
lea eax, [esp + 0xae]
mov ecx, dword [esp + 0x1c]
lea edx, [ecx - 1]
cmp edx, edi
jbe 0x4014b9
lea ecx, [edi + 1]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], ecx
cmp ecx, 2
mov dword [esp + 0x18], edi
jb 0x401c9a
mov ecx, edi
cmp edi, edx
jb 0x4014d2
mov ecx, edx
lea edi, [ecx - 1]
mov edx, 1
cmp edi, 7
mov dword [esp + 0x30], ebx
jae 0x401efe
mov edi, eax
jmp 0x401f69
mov ecx, str.0123456789ABCDEFXP
cmp al, 0x41
je 0x4014fc
mov ecx, str.0123456789abcdefxp
mov dword [esp + 8], ecx
mov dword [esp + 0x58], eax
mov eax, 6
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
je 0x401514
mov eax, ecx
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 4]
test eax, eax
jns 0x40153d
mov edx, dword [esp + 4]
mov ecx, edx
xor ecx, 0x80
add ecx, edx
and edx, 0xffffff7f
sub ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x24]
mov edi, dword [ecx]
mov cl, 0x2d
cmp byte [esp + 4], 0
js 0x40169c
mov edx, dword [esp + 4]
or edx, 4
mov ebx, dword [esp + 4]
xor ebx, 0xfffffffb
mov cl, 0x20
test edx, ebx
jne 0x40169c
mov cl, 0x2b
test byte [esp + 4], 2
jne 0x40169c
xor ebx, ebx
jmp 0x4016a2
mov dword [esp + 0x28], str.0123456789ABCDEFXP
cmp al, 0x42
je 0x401590
mov dword [esp + 0x28], str.0123456789abcdefxp
mov byte [esp + 0x44], 0
test byte [esp + 4], 8
je 0x4015b1
cmp al, 0x42
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x46], al
mov dword [esp + 0x1c], 0x180
mov ecx, 1
test byte [esp + 4], 0x20
je 0x40178b
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
mov ebx, dword [eax + 4]
lea edx, [eax + 8]
mov dword [esp + 0x24], edx
jmp 0x40179a
mov ecx, str.0123456789ABCDEFXP
cmp al, 0x47
je 0x4015ec
mov ecx, str.0123456789abcdefxp
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x24]
fld qword [eax]
mov ecx, dword [esp + 0x10]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov ebx, 6
cmp ecx, 0xffffffff
je 0x40160e
mov ebx, eax
lea eax, [ebx - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x58]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x84]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x24]
lea edx, [esp + 0x34]
call fcn.00403660
add esp, 0x18
test eax, eax
je 0x40164f
or dword [esp + 4], 0x80
mov ecx, dword [esp + 0x1c]
cmp ecx, ebx
jb 0x401659
mov ecx, ebx
mov eax, ecx
cmp ecx, 2
jb 0x40172a
mov ecx, dword [esp + 0xc]
mov dword [esp + 8], ecx
mov ecx, ebx
nop
nop
mov edx, dword [esp + 8]
cmp byte [edx + eax - 1], 0x30
jne 0x401ca1
mov edi, eax
lea edx, [ecx - 1]
dec edi
mov eax, edi
cmp edi, 2
jb 0x401ca3
cmp ecx, 1
mov ecx, edx
jne 0x401670
jmp 0x401ca3
mov byte [esp + 0x45], cl
mov bl, 1
mov edx, eax
and edx, 0xfffff
shr eax, 0x14
and eax, 0x7ff
je 0x401b3a
add eax, 0xfffffc01
mov dword [esp + 0x28], eax
mov ecx, 0xffffffff
mov eax, edi
add eax, ecx
mov ecx, 0xfffff
adc edx, ecx
add eax, 1
adc edx, 0
jmp 0x401b54
mov edx, dword [esp + 0x24]
lea ebx, [edx + 8]
mov edi, dword [edx]
mov ecx, dword [edx + 4]
cmp al, 0x75
je 0x4020ab
test ecx, ecx
mov edx, dword [esp + 0x10]
jns 0x4020a1
neg edi
mov eax, 0
sbb eax, ecx
or dword [esp + 4], 0xa0
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], ebx
jmp 0x4020b7
add ecx, 2
or dword [esp + 4], 0x200
jmp 0x4012f2
mov edx, ebx
jmp 0x401ca3
and dword [esp + 4], 0xffffffef
mov dword [esp + 0x10], 8
mov dword [esp + 0x28], str.0123456789ABCDEFXP
cmp al, 0x58
je 0x401752
mov dword [esp + 0x28], str.0123456789abcdefxp
mov dword [esp + 0x1c], 0x440
mov byte [esp + 0x44], 0
mov ecx, 4
test byte [esp + 4], 8
je 0x401780
cmp al, 0x58
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x46], al
test byte [esp + 4], 0x20
jne 0x4015c9
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x24], eax
xor ebx, ebx
mov dword [esp + 0x40], 0
mov byte [esp + 0x38], 0
mov edx, edi
or edx, ebx
jne 0x4017bd
mov byte [esp + 0x44], 0
cmp dword [esp + 0x10], 0
je 0x401b26
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, edi
mov eax, dword [esp + 0x1c]
mov cl, ah
shrd edi, ebx, cl
mov ecx, dword [esp + 0x28]
movzx ecx, byte [ecx + edx]
mov byte [esp + 0x26b], cl
mov cl, ah
shr ebx, cl
test ah, 0x20
mov ecx, ebx
jne 0x4017f1
mov edx, edi
mov edi, ecx
jmp 0x4017f5
mov edx, ecx
xor edi, edi
mov dword [esp + 0x14], eax
mov ecx, edx
mov dword [esp + 0x30], edi
or ecx, edi
jne 0x40181f
mov ecx, 1
cmp dword [esp + 0x10], 2
jge 0x40181f
lea eax, [esp + 0x26b]
mov dword [esp + 8], eax
jmp 0x40192e
lea eax, [esp + 0x26b]
mov dword [esp + 8], eax
mov eax, edx
lea ebx, [esp + 0x26c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
test byte [esp + 4], 0x40
mov eax, dword [esp + 0x14]
jne 0x401860
mov ecx, dword [esp + 8]
mov dword [esp + 0x18], ecx
jmp 0x4018ba
mov dword [esp + 0x18], ebx
inc eax
mov dword [esp + 0x1c], eax
mov ecx, eax
and ecx, 0xf
mov ebx, eax
shr eax, 4
mov edi, eax
xor edi, 0xfffffff0
or eax, 0xf
and eax, edi
cmp ecx, eax
jne 0x4018b0
and ebx, 0xfffffff0
mov dword [esp + 0x1c], ebx
movzx eax, byte [0x44e001]
mov ecx, eax
add cl, al
and cl, 0xf4
sub al, cl
add al, 0xfa
mov ecx, dword [esp + 0x18]
mov byte [ecx - 2], al
add ecx, 0xfffffffe
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x1c]
jmp 0x4018ba
mov eax, dword [esp + 8]
mov dword [esp + 0x18], eax
mov eax, ebx
mov ebx, 0xffffffff
mov cl, ah
shl ebx, cl
not ebx
and ebx, edx
mov edi, edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
mov cl, ah
mov edx, dword [esp + 0x30]
shrd edi, edx, cl
mov eax, dword [esp + 0x28]
movzx eax, byte [eax + ebx]
mov ebx, dword [esp + 0x18]
mov byte [ebx - 1], al
mov eax, dword [esp + 0x14]
mov cl, ah
shr edx, cl
mov ecx, edx
test ah, 0x20
jne 0x401900
mov edx, edi
jmp 0x401904
mov edx, ecx
xor ecx, ecx
lea eax, [ebx - 1]
mov dword [esp + 8], eax
mov eax, edx
mov dword [esp + 0x30], ecx
or eax, ecx
jne 0x401840
lea ecx, [esp + 0x26c]
sub ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x10]
jl 0x401840
mov eax, dword [esp + 0x14]
shl eax, 0x14
and eax, 0xf000000
add eax, ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
xor edi, edi
mov edx, dword [esp + 8]
jmp 0x402add
mov byte [esp + 0x44], 0
test byte [esp + 4], 8
je 0x401962
mov word [esp + 0x44], 0x3001
mov dword [esp + 0x1c], 0x330
mov dword [esp + 0x28], str.0123456789ABCDEFXP
mov ecx, 3
test byte [esp + 4], 0x20
je 0x40178b
jmp 0x4015c9
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov ecx, str.null
test eax, eax
je 0x401998
mov ecx, eax
mov eax, dword [esp + 0x10]
mov ebx, eax
test eax, eax
jns 0x4019a7
mov ebx, 0xffffffff
test cl, 3
mov dword [esp + 8], ecx
je 0x402a71
lea edx, [ebx + ecx]
test eax, eax
je 0x402ab4
cmp byte [ecx], 0
je 0x402ab2
inc ecx
lea edi, [ebx - 1]
test cl, 3
je 0x402a6f
test edi, edi
je 0x402ab4
cmp byte [ecx], 0
je 0x402ab2
mov eax, dword [esp + 8]
lea ecx, [eax + 2]
lea edi, [ebx - 2]
test cl, 3
je 0x402a6f
test edi, edi
je 0x402ab4
cmp byte [ecx], 0
je 0x402ab2
mov eax, dword [esp + 8]
lea ecx, [eax + 3]
lea edi, [ebx - 3]
test cl, 3
je 0x402a6f
test edi, edi
je 0x402ab4
cmp byte [ecx], 0
je 0x402ab2
mov eax, dword [esp + 8]
lea ecx, [eax + 4]
add ebx, 0xfffffffc
test cl, 3
je 0x402a71
test ebx, ebx
je 0x401a47
mov edx, ecx
mov esi, dword [esp + 0x2c]
jmp 0x402ab4
mov byte [esp + 0x26b], al
mov dword [esp + 0x1c], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
lea edx, [esp + 0x26b]
xor eax, eax
mov dword [esp + 4], 0
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x34], 0
jmp 0x402add
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x24], ecx
mov byte [esp + 0x26b], al
mov dword [esp + 0x1c], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
lea edx, [esp + 0x26b]
jmp 0x402ad7
mov eax, dword [esp + 0x24]
fld qword [eax]
add eax, 8
mov dword [esp + 0x24], eax
test dword [esp + 4], 0x100
jne 0x4022a9
jmp 0x402439
mov eax, esi
sub eax, edi
mov ecx, eax
mov edx, dword [esp + 0x50]
and ecx, edx
xor eax, edx
lea eax, [eax + ecx*2]
mov edx, dword [esp + 0x24]
mov ecx, dword [edx]
mov dword [ecx], eax
add edx, 4
mov dword [esp + 0x24], edx
jmp 0x4035f4
cmp byte [ecx + 2], 0x32
je 0x401cf0
mov ecx, dword [esp + 0x4c]
jmp 0x4012f2
mov dword [esp + 0x1c], 0
lea edx, [esp + 0x26c]
jmp 0x402ad7
mov eax, edi
mov ecx, edi
or ecx, edx
mov ecx, 0
je 0x401b4c
mov ecx, 0xfffffc02
mov dword [esp + 0x28], ecx
mov dword [esp + 0x40], ecx
shld edx, eax, 8
shl eax, 8
mov edi, dword [esp + 0x54]
cmp edi, 0xe
jg 0x401bad
mov dword [esp + 0x18], ebx
mov ebx, edi
and ebx, 4
mov ecx, edi
or ecx, 4
imul ecx, ebx
xor ebx, 4
and edi, 0xfb
imul edi, ebx
add ecx, edi
xor ebx, ebx
mov edi, 0x8000000
shrd ebx, edi, cl
mov edi, ebx
mov ebx, 0x8000000
shr ebx, cl
test cl, 0x20
je 0x401b9f
mov edi, ebx
xor ebx, ebx
add eax, edi
mov dword [esp + 0x14], eax
adc edx, ebx
mov ebx, dword [esp + 0x18]
jmp 0x401bb1
mov dword [esp + 0x14], eax
movzx ecx, bl
lea edi, [esp + 0x44]
mov word [ecx + edi + 1], 0x7830
or bl, 2
mov byte [esp + 0x44], bl
mov ecx, edx
shr ecx, 0x1c
mov eax, dword [esp + 8]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xac], cl
mov edi, dword [esp + 0x54]
test edi, edi
je 0x401c80
movzx ecx, byte [section..data]
xor cl, 0xa2
mov byte [esp + 0xad], cl
lea ecx, [esp + 0xae]
mov dword [esp + 0xc], ecx
mov eax, edi
cmp edi, 0xd
jb 0x401c0e
mov eax, 0xd
mov ecx, edi
sub ecx, eax
jg 0x401c16
xor ecx, ecx
mov dword [esp + 0x18], ecx
mov ecx, eax
and ecx, 3
je 0x401cf8
mov dword [esp + 0x10], eax
xor ebx, ebx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x30], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
shr edi, 0x18
and edi, 0xf
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + edi]
shld edx, eax, 4
mov byte [esp + ebx + 0xae], cl
mov ecx, dword [esp + 0x30]
shl eax, 4
inc ebx
cmp ecx, ebx
jne 0x401c40
mov dword [esp + 0x14], eax
lea ecx, [esp + 0xae]
add ecx, ebx
mov eax, dword [esp + 0x10]
sub eax, ebx
mov edi, dword [esp + 0x54]
jmp 0x401cff
lea ecx, [esp + 0xad]
mov dword [esp + 0xc], ecx
xor edi, edi
mov dword [esp + 0x14], ecx
mov dword [esp + 8], ecx
jmp 0x401d8d
mov edi, eax
jmp 0x401f92
mov edx, ecx
add dword [esp + 0x24], 8
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x40]
cmp ecx, 0xfffffffd
jl 0x401cd2
cmp ecx, ebx
jg 0x401cd2
test ecx, ecx
jle 0x402092
mov edi, eax
sub edi, ecx
jg 0x402482
xor edi, edi
jmp 0x402482
cmp edx, eax
jle 0x401cde
mov edi, eax
dec edi
jmp 0x401429
xor edi, edi
sub edx, 1
jb 0x401429
mov edi, edx
jmp 0x401429
add ecx, 3
jmp 0x4012f2
lea ecx, [esp + 0xae]
cmp edi, 4
jb 0x401d7a
mov ebx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x30], ebx
mov dword [esp + 0x10], eax
mov edi, edx
shr edi, 0x18
and edi, 0xf
mov eax, dword [esp + 8]
movzx ebx, byte [eax + edi]
mov byte [ecx], bl
mov edi, edx
shr edi, 0x14
and edi, 0xf
movzx ebx, byte [eax + edi]
mov byte [ecx + 1], bl
mov edi, edx
shr edi, 0x10
and edi, 0xf
movzx ebx, byte [eax + edi]
mov eax, dword [esp + 0x10]
mov byte [ecx + 2], bl
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x14]
shld ebx, edi, 0x10
shl edi, 0x10
mov dword [esp + 0x14], edi
shr edx, 0xc
and edx, 0xf
mov edi, dword [esp + 8]
movzx edx, byte [edi + edx]
mov byte [ecx + 3], dl
add ecx, 4
mov edx, ebx
add eax, 0xfffffffc
jne 0x401d10
mov dword [esp + 8], ecx
lea edi, [esp + 0xae]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
cmp byte [esp + 0x58], 0x41
setne cl
shl cl, 5
or cl, 0x50
mov byte [esp + 0x39], cl
test eax, eax
js 0x401dca
mov byte [esp + 0x3a], 0x2b
cmp eax, 0x3e7
ja 0x401dd8
cmp eax, 0x63
jbe 0x401ede
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 5
jmp 0x401de4
mov byte [esp + 0x3a], 0x2d
neg eax
cmp eax, 0x3e7
jbe 0x401db3
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 6
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], eax
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea ebx, [edx + edx*4]
mov eax, dword [esp + 0x28]
mov edi, 0x66666667
imul edi
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
imul edi
mov eax, dword [esp + 0x28]
sub eax, ebx
mov ebx, dword [esp + 0x10]
mov byte [esp + 0x38], bl
or al, 0x30
mov byte [esp + ebx + 0x38], al
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
mov byte [esp + ebx + 0x37], cl
mov eax, dword [esp + 0x28]
cmp byte [esp + 0x30], 0
mov edi, dword [esp + 0x18]
jne 0x402866
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x38]
mov byte [ebx + eax - 2], cl
mov eax, dword [esp + 0x28]
cmp eax, 0x3e8
jb 0x402866
mov ecx, 0x10624dd3
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 6
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x38]
mov byte [ebx + eax - 3], cl
jmp 0x402866
cmp eax, 9
jbe 0x40285b
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 4
mov cl, 1
mov dword [esp + 0x30], ecx
jmp 0x401dec
mov dword [esp + 0x28], ecx
mov ebx, ecx
and ebx, 0xfffffff8
xor edx, edx
mov ecx, dword [esp + 8]
mov edi, eax
nop
movzx eax, byte [ecx + edx + 1]
mov byte [edi + edx], al
movzx eax, byte [ecx + edx + 2]
mov byte [edi + edx + 1], al
movzx eax, byte [ecx + edx + 3]
mov byte [edi + edx + 2], al
movzx eax, byte [ecx + edx + 4]
mov byte [edi + edx + 3], al
movzx eax, byte [ecx + edx + 5]
mov byte [edi + edx + 4], al
movzx eax, byte [ecx + edx + 6]
mov byte [edi + edx + 5], al
movzx eax, byte [ecx + edx + 7]
mov byte [edi + edx + 6], al
movzx eax, byte [ecx + edx + 8]
mov byte [edi + edx + 7], al
add edx, 8
cmp ebx, edx
jne 0x401f10
add edi, edx
inc edx
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x30]
and ecx, 7
je 0x401f92
mov ebx, ecx
mov ecx, dword [esp + 8]
add ecx, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx + edx]
mov byte [edi + edx], al
inc edx
cmp ebx, edx
jne 0x401f80
add edi, edx
mov ebx, dword [esp + 0x30]
mov dword [esp + 8], edi
mov eax, dword [esp + 0x14]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x39], al
test ebx, ebx
jle 0x401fb0
dec ebx
mov byte [esp + 0x3a], 0x2b
mov edi, ebx
jmp 0x401fbc
mov byte [esp + 0x3a], 0x2d
mov edi, 1
sub edi, ebx
cmp edi, 0x64
mov eax, 4
sbb eax, 0xffffffff
mov dword [esp + 0x14], eax
mov eax, edi
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 0x30], eax
mov ebx, edi
mov eax, edi
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
sub ebx, dword [esp + 0x30]
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
or bl, 0x30
mov edx, dword [esp + 0x14]
mov byte [esp + 0x38], dl
mov byte [esp + edx + 0x38], bl
add al, 0x30
mov byte [esp + edx + 0x37], al
cmp edi, 0x64
jb 0x402070
mov ebx, edx
mov eax, edi
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
add dl, 0x30
lea eax, [esp + 0x38]
mov byte [ebx + eax - 2], dl
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x14], 0x3000001
mov edi, dword [esp + 8]
jmp 0x402a54
cmp edx, eax
jl 0x402098
mov edx, eax
sub edx, ecx
mov edi, edx
jmp 0x402482
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], ebx
jmp 0x4020b7
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], ebx
mov edx, dword [esp + 0x10]
test dword [esp + 4], 0x100
jne 0x402274
mov dword [esp + 0x28], edi
movzx edx, byte [0x44e001]
mov eax, edx
xor al, 0xfa
mov byte [esp + 0x54], al
mov eax, edx
add al, dl
and al, 0xf4
sub dl, al
add dl, 0xfa
mov byte [esp + 0x30], dl
mov edi, 0x200
mov dword [esp + 8], 0
mov edx, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x28]
cmp ebx, 0x5f5e100
mov eax, edx
sbb eax, 0
jb 0x402130
push 0
push 0x5f5e100
push edx
push ebx
call fcn.0040c740
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov dword [esp + 0x28], eax
jmp 0x40213a
xor edx, edx
mov dword [esp + 0x28], 0
lea eax, [esp + 0x64]
lea ecx, [eax + edi]
test byte [esp + 4], 0x40
mov dword [esp + 0x14], edx
jne 0x402190
mov dword [esp + 0x18], ecx
mov eax, ebx
mov ecx, 0x51eb851f
mul ecx
shr edx, 5
imul eax, edx, 0x64
mov ecx, ebx
sub ebx, eax
movzx eax, word [ebx + ebx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + edi + 0x6a], ax
add edi, 0xfffffffe
cmp ecx, 0x64
mov ebx, edx
jae 0x402150
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x18]
jmp 0x402200
test ebx, ebx
mov eax, dword [esp + 8]
jne 0x4021d2
jmp 0x402200
mov dword [esp + 0x18], ecx
mov ecx, eax
mov eax, ebx
mov edx, 0xcccccccd
mul edx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ebx, eax
or bl, 0x30
mov byte [esp + edi + 0x6b], bl
dec edi
mov ebx, edx
mov edx, dword [esp + 0x14]
mov eax, ecx
mov ecx, dword [esp + 0x18]
test ebx, ebx
je 0x402200
test byte [esp + 4], 0x40
je 0x4021a0
cmp eax, 3
je 0x4021e5
mov dword [esp + 0x18], ecx
inc eax
jmp 0x4021a4
movzx eax, byte [esp + 0x54]
mov byte [esp + edi + 0x6b], al
dec edi
dec ecx
xor eax, eax
test ebx, ebx
jne 0x4021d2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
or eax, edx
lea edx, [esp + edi + 0x6c]
je 0x4022ff
cmp edx, ecx
mov edx, dword [esp + 0x14]
jne 0x40224c
jmp 0x402100
mov eax, dword [esp + 8]
mov dword [esp + 8], eax
mov byte [esp + edi + 0x6b], 0x30
dec edi
lea eax, [esp + edi]
add eax, 0x6c
cmp eax, ecx
je 0x402100
test byte [esp + 4], 0x40
je 0x402230
mov eax, dword [esp + 8]
cmp eax, 3
je 0x40225f
inc eax
jmp 0x402234
movzx eax, byte [esp + 0x30]
mov byte [esp + edi + 0x6b], al
dec edi
dec ecx
mov dword [esp + 8], 0
jmp 0x40223e
mov eax, 1
cmp edx, 0xffffffff
je 0x402280
mov eax, edx
xor edx, edx
mov ecx, edi
cmp edi, 0x400
mov ecx, dword [esp + 0x14]
sbb ecx, 0
jb 0x402295
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x60], edi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x64], eax
fild qword [esp + 0x60]
mov edi, dword [esp + 4]
mov eax, edi
xor eax, 0xfffff7ff
mov ecx, edi
or ecx, 0x800
xor edx, edx
test ecx, eax
sete dl
fld qword [edx*8 + 0x44b550]
cmp edi, 0x3ffffff
ja 0x40238c
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x4023b4
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x4023b4
fstp st(0)
fstp st(0)
jmp 0x402439
cmp byte [esp + edi + 0x6c], 0x30
sete al
cmp edi, 0x200
setne cl
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov ch, 0x2d
cmp byte [esp + 4], 0
js 0x40234d
mov ebx, dword [esp + 4]
mov byte [esp + 8], al
mov eax, ebx
or eax, 4
mov edi, edx
mov edx, ebx
xor edx, 0xfffffffb
mov ch, 0x20
test eax, edx
movzx eax, byte [esp + 8]
mov edx, edi
jne 0x40234d
mov ch, 0x2b
test byte [esp + 4], 2
je 0x402356
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], ch
and cl, al
movzx eax, cl
add edx, eax
mov eax, edx
and eax, dword [esp + 0x5c]
mov edi, edx
not edi
lea ecx, [esp + 0x26c]
and edi, ecx
sub edi, eax
mov dword [esp + 0x1c], edi
jne 0x402393
mov byte [edx - 1], 0x30
dec edx
mov dword [esp + 0x1c], 1
mov eax, 1
jmp 0x402395
fstp st(0)
jmp 0x402439
mov eax, edi
xor edi, edi
cmp dword [esp + 0x10], 0
jg 0x4023a6
mov dword [esp + 0x10], 0
add eax, 0x3000000
mov ecx, dword [esp + 0x10]
jmp 0x402add
fdiv st(2), st(0)
mov eax, dword [esp + 4]
lea ecx, [eax + 0x1000000]
cmp eax, 0x2ffffff
ja 0x402431
fucom st(2)
fnstsw ax
sahf
jbe 0x4023d9
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402431
fdiv st(2), st(0)
mov eax, dword [esp + 4]
lea ecx, [eax + 0x2000000]
cmp eax, 0x1ffffff
ja 0x402431
fucom st(2)
fnstsw ax
sahf
jbe 0x4023fe
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402431
fdiv st(2), st(0)
mov eax, dword [esp + 4]
lea ecx, [eax + 0x3000000]
cmp eax, 0xffffff
ja 0x402431
fucom st(2)
fnstsw ax
sahf
jbe 0x403601
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x403601
fstp st(0)
fstp st(0)
mov dword [esp + 4], ecx
mov edi, 6
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x402449
mov edi, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
mov dword [esp + 0x10], edi
lea ecx, [esp + 0x24]
lea edx, [esp + 0x34]
call fcn.00403660
add esp, 0x18
test eax, eax
je 0x402482
or dword [esp + 4], 0x80
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
cmp byte [esp + 4], 0
js 0x4024b0
mov edx, dword [esp + 4]
mov ecx, edx
or ecx, 4
xor edx, 0xfffffffb
mov al, 0x20
test ecx, edx
jne 0x4024b0
mov al, 0x2b
test byte [esp + 4], 2
je 0x4024b9
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x40]
cmp ecx, 0x7000
jne 0x4024d0
xor eax, eax
mov edx, dword [esp + 0xc]
jmp 0x402ad9
test ecx, ecx
mov dword [esp + 0x18], edi
jle 0x402573
xor edx, edx
test byte [esp + 4], 0x40
je 0x4024fe
mov edi, 0x258
sub edi, ecx
mov eax, edi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, edi
sub edx, eax
cmp ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], edx
jae 0x402641
xor eax, eax
lea ecx, [esp + 0xac]
mov dword [esp + 0x14], ecx
jmp 0x402541
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + eax]
lea edi, [edx + 1]
mov dword [esp + 0x14], edi
mov byte [edx], cl
inc eax
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jae 0x4026bc
test byte [esp + 4], 0x40
je 0x40251f
mov ecx, dword [esp + 0x10]
inc ecx
cmp ecx, 4
jne 0x40251b
mov ecx, dword [esp + 4]
and ecx, 0x40
shr ecx, 6
mov dword [esp + 0x10], ecx
movzx ecx, byte [0x44e001]
xor cl, 0xfa
mov edx, dword [esp + 0x14]
mov byte [edx], cl
inc edx
jmp 0x402523
mov byte [esp + 0xac], 0x30
lea edx, [esp + 0xad]
test edi, edi
je 0x40259d
movzx eax, byte [section..data]
xor al, 0xa2
mov byte [esp + 0xad], al
lea edx, [esp + 0xae]
neg ecx
mov eax, edi
cmp edi, ecx
jl 0x4025a7
mov edi, ecx
test edi, edi
mov dword [esp + 0x14], edi
je 0x4025e2
mov eax, edx
and eax, 3
je 0x4025e2
mov ecx, edx
mov ebx, edx
not ebx
and ebx, 3
dec edi
cmp ebx, edi
jb 0x4025c6
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x30
mov dword [esp + 0x10], ecx
push ecx
call fcn.0040c830
add esp, 0xc
mov edx, dword [esp + 8]
add edx, ebx
inc edx
sub edi, ebx
mov ebx, edi
cmp edi, 4
jl 0x402624
mov eax, ebx
cmp ebx, 7
jl 0x4025f5
mov eax, 7
neg eax
lea edi, [ebx + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
mov dword [esp + 0x10], ebx
mov ebx, edx
push edx
call fcn.0040c830
add esp, 0xc
lea edx, [edi + ebx]
add edx, 4
mov ebx, dword [esp + 8]
sub ebx, edi
add ebx, 0xfffffffc
test ebx, ebx
je 0x402894
push ebx
push 0x30
mov edi, edx
push edx
call fcn.0040c830
add esp, 0xc
add edi, ebx
jmp 0x402896
xor eax, eax
mov ebx, 0xffffffff
mov edi, 1
lea ecx, [esp + 0xac]
mov dword [esp + 8], ecx
jmp 0x402681
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + edi - 1]
mov byte [edx], cl
lea ecx, [edx + 1]
mov dword [esp + 8], ecx
inc eax
dec ebx
inc edi
cmp eax, dword [esp + 0x1c]
jae 0x402755
test byte [esp + 4], 0x40
je 0x40265e
mov ecx, dword [esp + 0x10]
inc ecx
cmp ecx, 4
jne 0x40265a
mov ecx, dword [esp + 4]
and ecx, 0x40
shr ecx, 6
mov dword [esp + 0x10], ecx
movzx ecx, byte [0x44e001]
mov edx, ecx
add dl, cl
and dl, 0xf4
sub cl, dl
add cl, 0xfa
mov edx, dword [esp + 8]
mov byte [edx], cl
inc edx
jmp 0x402662
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x18], 0
je 0x4026dd
movzx ecx, byte [section..data]
xor cl, 0xa2
mov byte [edx + 1], cl
add edx, 2
mov ecx, dword [esp + 0x40]
mov edi, edx
mov dword [esp + 8], edi
mov edx, dword [esp + 0x1c]
mov edi, edx
sub edi, ecx
mov ebx, dword [esp + 0x18]
cmp edi, ebx
jbe 0x4026fa
mov edi, ebx
lea edx, [ecx + ebx]
mov dword [esp + 0x1c], edx
cmp eax, edx
jae 0x40272c
mov edi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + eax]
mov byte [edi], cl
inc edi
inc eax
mov edx, dword [esp + 0x1c]
cmp eax, edx
jb 0x402710
mov dword [esp + 8], edi
mov ecx, dword [esp + 0x40]
lea eax, [esp + 0xac]
mov edi, dword [esp + 0x14]
sub edi, eax
mov eax, edi
add eax, 0x3000000
mov edi, dword [esp + 0x18]
sub edi, edx
add edi, ecx
mov dword [esp + 0x18], edi
mov edi, dword [esp + 8]
jmp 0x4029b6
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x40]
mov ecx, edx
sub ecx, eax
jbe 0x402825
mov dword [esp + 0x30], edx
test byte [esp + 4], 0x40
mov edx, dword [esp + 0x10]
jne 0x402913
cmp dword [esp + 0x30], eax
je 0x4027e6
mov eax, dword [esp + 8]
and eax, 3
je 0x4027e6
mov ecx, 2
sub ecx, dword [esp + 0x14]
and ecx, 3
mov eax, dword [esp + 0x30]
sub eax, edi
mov edx, ecx
mov dword [esp + 0x28], ecx
cmp ecx, eax
jb 0x4027a7
mov edx, eax
mov dword [esp + 0x54], edx
lea eax, [edx + 1]
push eax
push 0x30
push dword [esp + 0x10]
call fcn.0040c830
add esp, 0xc
mov ecx, dword [esp + 0x30]
add ebx, ecx
mov eax, dword [esp + 0x28]
cmp ebx, eax
jb 0x4027cd
mov ebx, eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x54]
add eax, edx
add eax, 2
mov dword [esp + 8], eax
sub ecx, ebx
sub ecx, edi
mov edx, dword [esp + 0x10]
cmp ecx, 4
jb 0x402913
mov edi, ecx
and edi, 0xfffffffc
push edi
push 0x30
mov ebx, dword [esp + 0x10]
push ebx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
call fcn.0040c830
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
add esp, 0xc
add ebx, edi
mov edi, ebx
and ecx, 3
test ecx, ecx
jne 0x40292d
jmp 0x402829
mov edi, dword [esp + 8]
mov ecx, edi
lea eax, [esp + 0xac]
sub ecx, eax
mov eax, ecx
add eax, 0x3000000
cmp dword [esp + 0x18], 0
je 0x402906
mov ecx, eax
movzx eax, byte [section..data]
xor al, 0xa2
mov byte [edi], al
mov eax, ecx
inc edi
jmp 0x4029b6
mov byte [esp + 0x38], 3
or al, 0x30
mov byte [esp + 0x3b], al
add dword [esp + 0x24], 8
mov ecx, dword [esp + 8]
mov eax, ecx
sub eax, dword [esp + 0x14]
mov dword [esp + 0x40], eax
lea eax, [esp + 0xac]
sub ecx, eax
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov edx, eax
mov eax, 0x3000001
jmp 0x402add
mov edi, edx
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea ecx, [ebx + eax]
mov edx, dword [esp + 0x18]
cmp ecx, edx
jle 0x4028bf
mov ecx, edx
not ecx
mov eax, dword [esp + 0x14]
and ecx, eax
mov ebx, eax
not ebx
and ebx, edx
sub ebx, ecx
mov dword [esp + 0x1c], ebx
test ebx, ebx
je 0x4029a7
mov ecx, ebx
and ecx, 3
je 0x402951
mov dword [esp + 8], ebx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
mov edi, dword [esp + 0xc]
lea ebx, [edi + 1]
mov dword [esp + 0xc], ebx
movzx ebx, byte [edi]
mov edi, eax
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x4028e0
add edi, edx
mov ebx, dword [esp + 8]
mov ecx, ebx
sub ecx, edx
jmp 0x402953
mov dword [esp + 0x18], 0
jmp 0x4029b6
mov edi, dword [esp + 8]
test ecx, ecx
jne 0x40292d
jmp 0x402829
mov byte [edi], 0x30
dec ecx
inc edi
test ecx, ecx
je 0x402829
test byte [esp + 4], 0x40
je 0x402920
inc edx
cmp edx, 4
jne 0x402920
movzx eax, byte [0x44e001]
xor al, 0xfa
mov byte [edi], al
xor edx, edx
inc edi
test ecx, ecx
jne 0x40292d
jmp 0x402829
mov ecx, ebx
cmp ebx, 4
jb 0x4029a7
mov edx, dword [esp + 0xc]
mov eax, edi
lea edi, [edx + 1]
mov dword [esp + 0xc], edi
movzx edx, byte [edx]
mov byte [eax], dl
mov edx, dword [esp + 0xc]
lea edi, [edx + 1]
mov dword [esp + 0xc], edi
movzx edx, byte [edx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0xc]
lea edi, [edx + 1]
mov dword [esp + 0xc], edi
movzx edx, byte [edx]
mov byte [eax + 2], dl
mov edx, dword [esp + 0xc]
lea edi, [edx + 1]
mov dword [esp + 0xc], edi
mov edi, eax
movzx edx, byte [edx]
mov byte [eax + 3], dl
add edi, 4
add ecx, 0xfffffffc
jne 0x402958
mov eax, dword [esp + 0x14]
add eax, ebx
sub dword [esp + 0x18], eax
mov eax, 0x3000001
mov dword [esp + 0x14], eax
test dword [esp + 4], 0x100
je 0x402a54
mov ecx, dword [esp + 4]
mov eax, ecx
and eax, 0x400
sete byte [esp + 0x38]
mov byte [esp + 0x39], 0x20
cmp ecx, 0x1000000
jb 0x402a54
mov edx, dword [esp + 4]
mov ecx, edx
shr ecx, 0x18
test edx, 0x800
jne 0x402a14
movzx ecx, byte [ecx + str._kMGT]
mov edx, eax
shr edx, 0xa
neg edx
mov byte [esp + edx + 0x3a], cl
cmp eax, 1
mov eax, 0
adc al, 1
jmp 0x402a50
mov ebx, dword [esp + 4]
mov edx, ebx
shr edx, 0xa
or edx, 0xfffffffe
movzx ecx, byte [ecx + str._KMGT]
neg edx
cmp eax, 1
mov eax, 0
adc al, 1
mov byte [esp + edx + 0x38], cl
mov ecx, ebx
and ecx, 0x1800
cmp ecx, 0x800
jne 0x402a50
movzx eax, al
mov byte [esp + eax + 0x39], 0x69
inc eax
mov byte [esp + 0x38], al
lea eax, [esp + 0xac]
sub edi, eax
mov dword [esp + 0x1c], edi
xor ecx, ecx
mov edx, eax
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
jmp 0x402add
mov ebx, edi
cmp ebx, 4
jb 0x402aa0
mov edx, dword [ecx]
mov edi, edx
not edi
mov eax, edi
and eax, 0x1010101
and edx, 0xfefefefe
sub edx, eax
and edx, edi
test edx, 0x80808080
jne 0x402aa4
add ecx, 4
add ebx, 0xfffffffc
cmp ebx, 3
ja 0x402a76
test ebx, ebx
je 0x402ab2
lea edx, [ecx + ebx]
cmp byte [ecx], 0
je 0x402ab2
inc ecx
dec ebx
jne 0x402aa7
mov ecx, edx
mov edx, ecx
add dword [esp + 0x24], 4
mov eax, dword [esp + 8]
sub edx, eax
mov dword [esp + 0x1c], edx
mov edx, eax
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
xor eax, eax
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 8], edx
mov dword [esp + 0x18], edi
mov ebx, dword [esp + 0x1c]
cmp ecx, ebx
jg 0x402af3
mov ecx, ebx
movsx eax, byte [esp + 0x44]
mov dword [esp + 0x10], ecx
lea edx, [ecx + eax]
movsx edi, byte [esp + 0x38]
mov ecx, edx
and ecx, edi
xor edx, edi
add edx, dword [esp + 0x18]
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x34]
cmp ecx, edx
jg 0x402b1b
mov ecx, edx
sub ecx, edx
sub dword [esp + 0x10], ebx
test byte [esp + 4], 1
mov edi, dword [esp + 0x20]
jne 0x402b4d
test byte [esp + 4], 0x10
jne 0x402b3d
mov dword [esp + 4], 0
jmp 0x402b4d
mov edx, dword [esp + 0x10]
cmp ecx, edx
jg 0x402b47
mov ecx, edx
mov dword [esp + 0x10], ecx
xor ecx, ecx
mov edx, dword [esp + 8]
mov dword [esp + 0x34], ecx
add ecx, dword [esp + 0x10]
je 0x40300e
test byte [esp + 4], 1
jne 0x402caf
mov ecx, dword [esp + 0x34]
test ecx, ecx
jle 0x402caf
mov eax, dword [ebp + 8]
jmp 0x402b99
mov esi, eax
mov edi, eax
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
sub ecx, edx
test ecx, ecx
mov eax, dword [ebp + 8]
jle 0x402ca6
mov edx, ecx
test eax, eax
mov dword [esp + 0x34], ecx
je 0x402bc2
mov eax, edi
xor eax, esi
mov ecx, edi
not ecx
and ecx, esi
add ecx, ecx
sub eax, ecx
mov ecx, dword [esp + 0x34]
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x402bc2
mov edx, eax
test edx, edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], edi
je 0x402c10
mov eax, esi
and eax, 3
je 0x402c10
mov edi, esi
not edi
and edi, 3
lea ebx, [edx - 1]
cmp edi, ebx
jb 0x402be5
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x20
push esi
call fcn.0040c830
add esp, 0xc
add esi, edi
inc esi
sub ebx, edi
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
cmp ebx, 4
jge 0x402c17
jmp 0x402c57
mov ebx, edx
cmp ebx, 4
jl 0x402c57
mov eax, ebx
mov edx, ebx
cmp ebx, 7
jl 0x402c25
mov eax, 7
neg eax
mov ebx, edx
lea edi, [edx + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x20
push esi
call fcn.0040c830
add esp, 0xc
add esi, edi
add esi, 4
sub ebx, edi
add ebx, 0xfffffffc
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
test ebx, ebx
je 0x402c71
push ebx
push 0x20
push esi
call fcn.0040c830
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x40]
add esp, 0xc
add esi, ebx
cmp dword [ebp + 8], 0
je 0x402b8c
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x402b8c
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402b80
jmp 0x403634
mov dword [esp + 0x34], ecx
movzx eax, byte [esp + 0x44]
lea ecx, [esp + 0x45]
mov dword [esp + 0xc], ecx
jmp 0x402cc9
mov esi, eax
mov edi, eax
movzx eax, byte [esp + 0x44]
test al, al
je 0x402ddd
movsx edx, al
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, edx
jl 0x402ce4
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x402cec
mov ebx, edx
sub al, bl
mov byte [esp + 0x44], al
test ebx, ebx
je 0x402d8b
mov eax, ebx
and eax, 3
je 0x402dd0
mov dword [esp + 0x20], edi
xor edx, edx
nop
nop
nop
nop
nop
mov edi, dword [esp + 0xc]
lea ecx, [edi + 1]
mov dword [esp + 0xc], ecx
movzx ecx, byte [edi]
mov byte [esi + edx], cl
inc edx
cmp eax, edx
jne 0x402d10
add esi, edx
mov eax, ebx
sub eax, edx
mov edi, dword [esp + 0x20]
cmp ebx, 4
jb 0x402d8b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402d40
cmp dword [ebp + 8], 0
je 0x402cc4
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x402cc4
mov ecx, eax
mov edx, dword [esp + 0x50]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x50], edx
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402cc0
jmp 0x403634
mov eax, ebx
cmp ebx, 4
jae 0x402d40
jmp 0x402d8b
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x14]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 4]
xor edi, edi
mov ebx, ecx
test cl, 0x40
je 0x402e11
and eax, 0xffffff
add eax, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
lea ecx, [edi + 1]
xor edx, edx
div ecx
sub edi, edx
cmp dword [esp + 0x10], 0
jle 0x4035e3
mov eax, dword [esp + 0x10]
jmp 0x402e44
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
test eax, eax
mov edx, dword [esp + 8]
jle 0x403005
mov dword [esp + 0x10], eax
mov ecx, eax
cmp dword [ebp + 8], 0
je 0x402e73
mov ecx, esi
sub ecx, dword [esp + 0x20]
mov eax, ecx
not eax
and ecx, 0xfffffdff
and eax, 0x200
sub eax, ecx
mov ecx, dword [esp + 0x10]
mov edx, ecx
cmp ecx, eax
jl 0x402e73
mov ecx, eax
mov eax, ebx
test al, 0x40
mov dword [esp + 0x14], ecx
jne 0x402ec0
test ecx, ecx
je 0x402ed0
mov eax, esi
and eax, 3
je 0x402ed0
mov eax, esi
not eax
and eax, 3
dec ecx
cmp eax, ecx
jb 0x402e96
mov eax, ecx
mov dword [esp + 0x28], eax
inc eax
push eax
push 0x30
push esi
mov dword [esp + 0x3c], ecx
call fcn.0040c830
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov eax, dword [esp + 0x28]
add esi, eax
inc esi
sub edx, eax
cmp edx, 4
jge 0x402ed7
jmp 0x402f16
mov edx, ecx
jmp 0x402f16
mov edx, ecx
cmp edx, 4
jl 0x402f16
mov eax, edx
cmp edx, 7
jl 0x402ee3
mov eax, 7
neg eax
add eax, edx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x28], eax
add eax, 4
push eax
push 0x30
push esi
mov dword [esp + 0x3c], edx
call fcn.0040c830
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov eax, dword [esp + 0x28]
add esi, eax
add esi, 4
sub edx, eax
add edx, 0xfffffffc
test edx, edx
je 0x402f60
test dl, 1
jne 0x402f30
mov eax, edx
cmp edx, 1
jne 0x402fc7
jmp 0x402f60
mov al, 0x30
mov ecx, ebx
test cl, 0x40
je 0x402f4d
cmp edi, dword [esp + 0x2c]
jne 0x402f4c
movzx eax, byte [0x44e001]
xor al, 0xfa
xor edi, edi
jmp 0x402f4d
inc edi
mov byte [esi], al
inc esi
lea eax, [edx - 1]
cmp edx, 1
jne 0x402fc7
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402e30
mov eax, esi
mov edx, dword [esp + 0x20]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402e30
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403634
mov esi, eax
mov dword [esp + 0x20], eax
jmp 0x402e30
movzx ecx, byte [0x44e001]
xor cl, 0xfa
xor edi, edi
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402f60
mov cl, 0x30
mov edx, ebx
test dl, 0x40
je 0x402ff1
cmp edi, dword [esp + 0x2c]
jne 0x402ff0
movzx edx, byte [0x44e001]
xor dl, 0xfa
xor edi, edi
jmp 0x402ff3
inc edi
mov dl, 0x30
mov byte [esi], dl
mov edx, ebx
test dl, 0x40
je 0x402fbc
cmp edi, dword [esp + 0x2c]
je 0x402fb0
inc edi
jmp 0x402fbc
movzx eax, byte [esp + 0x44]
mov edi, dword [esp + 0x20]
lea ecx, [esp + 0x45]
mov dword [esp + 0xc], ecx
jmp 0x40302d
mov esi, eax
mov edi, eax
mov edx, dword [esp + 8]
movzx eax, byte [esp + 0x44]
test al, al
je 0x40312d
movsx ecx, al
mov ebx, ecx
cmp dword [ebp + 8], 0
je 0x403050
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, ecx
jl 0x403050
mov ebx, ecx
sub cl, bl
mov byte [esp + 0x44], cl
test ebx, ebx
je 0x4030eb
mov ecx, ebx
and ecx, 3
je 0x403120
mov dword [esp + 0x20], edi
xor edx, edx
nop
mov edi, dword [esp + 0xc]
lea eax, [edi + 1]
mov dword [esp + 0xc], eax
movzx eax, byte [edi]
mov byte [esi + edx], al
inc edx
cmp ecx, edx
jne 0x403070
add esi, edx
mov ecx, ebx
sub ecx, edx
mov edi, dword [esp + 0x20]
cmp ebx, 4
jb 0x4030eb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x4030a0
cmp dword [ebp + 8], 0
je 0x403024
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403024
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x403020
jmp 0x403634
mov ecx, ebx
cmp ebx, 4
jae 0x4030a0
jmp 0x4030eb
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x1c]
test edi, edi
jne 0x403288
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov edi, dword [esp + 0x20]
jne 0x4033cc
lea eax, [esp + 0x39]
mov dword [esp + 0xc], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + 0x38]
test cl, cl
je 0x4034ba
movsx edx, cl
mov eax, edi
sub eax, esi
add eax, 0x200
cmp eax, edx
jl 0x40317f
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x403187
mov eax, edx
sub cl, al
mov byte [esp + 0x38], cl
test eax, eax
je 0x40322b
mov ecx, eax
and ecx, 3
je 0x403270
mov dword [esp + 0x20], edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esp + 0xc]
lea ebx, [edi + 1]
mov dword [esp + 0xc], ebx
movzx ebx, byte [edi]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x4031b0
add esi, edx
mov ecx, eax
sub ecx, edx
mov edi, dword [esp + 0x20]
cmp eax, 4
jb 0x40322b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x4031e0
cmp dword [ebp + 8], 0
je 0x403160
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403160
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403634
mov esi, eax
mov edi, eax
jmp 0x403160
mov ecx, eax
cmp eax, 4
jae 0x4031e0
jmp 0x40322b
sub edi, ebx
je 0x40313d
mov ebx, edi
cmp dword [ebp + 8], 0
je 0x4032a3
mov eax, dword [esp + 0x20]
sub eax, esi
add eax, 0x200
mov ebx, edi
cmp edi, eax
jl 0x4032a3
mov ebx, eax
mov eax, ebx
cmp ebx, 4
jl 0x4032cd
nop
nop
nop
nop
nop
nop
mov ecx, dword [edx]
mov dword [esi], ecx
add esi, 4
add edx, 4
mov ecx, eax
not ecx
and ecx, 4
and eax, 0x7ffffffb
sub eax, ecx
cmp eax, 3
jg 0x4032b0
test eax, eax
je 0x403361
mov ecx, eax
and ecx, 7
je 0x4033b0
mov dword [esp + 0x2c], ebx
mov dword [esp + 8], edi
mov edi, edx
xor edx, edx
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x4032f0
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov edx, edi
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x2c]
cmp eax, 8
jb 0x403361
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edx]
mov byte [esi], al
movzx eax, byte [edx + 1]
mov byte [esi + 1], al
movzx eax, byte [edx + 2]
mov byte [esi + 2], al
movzx eax, byte [edx + 3]
mov byte [esi + 3], al
movzx eax, byte [edx + 4]
mov byte [esi + 4], al
movzx eax, byte [edx + 5]
mov byte [esi + 5], al
movzx eax, byte [edx + 6]
mov byte [esi + 6], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [esi + 7], al
add esi, 8
add ecx, 0xfffffff8
jne 0x403320
cmp dword [ebp + 8], 0
je 0x403280
mov eax, esi
mov ecx, dword [esp + 0x20]
sub eax, ecx
cmp eax, 0x1ff
jl 0x403280
mov dword [esp + 0x2c], ebx
mov ebx, edi
mov edi, edx
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403634
mov esi, eax
mov dword [esp + 0x20], eax
mov edx, edi
mov edi, ebx
mov ebx, dword [esp + 0x2c]
jmp 0x403280
mov ecx, eax
cmp eax, 8
jae 0x403320
jmp 0x403361
mov ecx, dword [esp + 0x18]
sub ecx, ebx
je 0x40314d
mov eax, edi
sub eax, esi
add eax, 0x200
mov ebx, ecx
mov dword [esp + 0x18], ecx
cmp ecx, eax
jl 0x4033e1
mov ebx, eax
cmp dword [ebp + 8], 0
jne 0x4033eb
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], ebx
je 0x403430
mov eax, esi
and eax, 3
je 0x403430
mov eax, ebx
mov ebx, esi
not ebx
and ebx, 3
lea edi, [eax - 1]
cmp ebx, edi
jb 0x403410
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x30
push esi
call fcn.0040c830
add esp, 0xc
add esi, ebx
inc esi
sub edi, ebx
mov ebx, dword [esp + 0x2c]
cmp edi, 4
jge 0x403437
jmp 0x40346b
mov edi, ebx
cmp edi, 4
jl 0x40346b
mov eax, edi
cmp edi, 7
jl 0x403443
mov eax, 7
neg eax
lea ebx, [edi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push esi
call fcn.0040c830
add esp, 0xc
add esi, ebx
add esi, 4
sub edi, ebx
add edi, 0xfffffffc
mov ebx, dword [esp + 0x2c]
test edi, edi
je 0x40347d
push edi
push 0x30
push esi
call fcn.0040c830
add esp, 0xc
add esi, edi
mov edi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
je 0x4033c0
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x4033c0
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403634
mov esi, eax
mov edi, eax
jmp 0x4033c0
test byte [esp + 4], 1
je 0x4035f4
cmp dword [esp + 0x34], 0
mov ecx, dword [esp + 0x4c]
mov ebx, dword [ebp + 8]
jle 0x4035fb
mov edx, dword [esp + 0x34]
jne 0x4034fe
jmp 0x4035fb
mov edx, dword [esp + 0x34]
sub edx, dword [esp + 4]
je 0x4035fb
mov dword [esp + 0x20], edi
mov eax, edi
sub eax, esi
add eax, 0x200
mov edi, edx
mov dword [esp + 0x34], edx
cmp edx, eax
jl 0x403517
mov edi, eax
test ebx, ebx
jne 0x40351f
mov edi, dword [esp + 0x34]
test edi, edi
mov dword [esp + 4], edi
je 0x403557
mov eax, esi
and eax, 3
je 0x403557
mov ebx, esi
not ebx
and ebx, 3
dec edi
cmp ebx, edi
jb 0x40353c
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x20
push esi
call fcn.0040c830
add esp, 0xc
add esi, ebx
inc esi
sub edi, ebx
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x4c]
cmp edi, 4
jl 0x403593
mov eax, edi
cmp edi, 7
jl 0x403568
mov eax, 7
neg eax
lea ebx, [edi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x20
push esi
call fcn.0040c830
add esp, 0xc
sub edi, ebx
add edi, 0xfffffffc
add esi, ebx
add esi, 4
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x4c]
test edi, edi
je 0x4035a9
push edi
push 0x20
push esi
call fcn.0040c830
mov ecx, dword [esp + 0x58]
add esp, 0xc
add esi, edi
mov edi, dword [esp + 0x20]
test ebx, ebx
je 0x4034f0
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x4034f0
add dword [esp + 0x50], eax
push eax
push dword [ebp + 0xc]
push edi
call ebx
add esp, 0xc
test eax, eax
je 0x403634
mov esi, eax
mov edi, eax
mov ecx, dword [esp + 0x4c]
jmp 0x4034f0
lea eax, [esp + 0x45]
mov dword [esp + 0xc], eax
mov edx, dword [esp + 8]
jmp 0x403131
mov ecx, dword [esp + 0x4c]
mov ebx, dword [ebp + 8]
inc ecx
jmp 0x40104a
fstp st(1)
fdivp st(1)
or dword [esp + 4], 0x4000000
jmp 0x402439
test ebx, ebx
je 0x40363a
mov eax, dword [esp + 0x2c]
mov ecx, eax
sub ecx, edi
test ecx, ecx
jle 0x403641
add dword [esp + 0x50], ecx
push ecx
push dword [ebp + 0xc]
push edi
call ebx
add esp, 0xc
mov edi, eax
jmp 0x403641
xor eax, eax
xor edi, edi
jmp 0x403641
mov eax, dword [esp + 0x2c]
mov byte [eax], 0
sub eax, edi
mov edx, eax
mov ecx, dword [esp + 0x50]
xor edx, ecx
and eax, ecx
lea eax, [edx + eax*2]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret