Function at 0x401000
Capabilities:
Encode data using xor
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x268
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x28], eax
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x48], 0
mov esi, edi
jmp 0x40103b
mov edi, eax
movzx eax, byte [ebx]
mov esi, edi
mov byte [edi], al
inc edi
inc ebx
mov dword [esp + 0x24], esi
test bl, 3
je 0x401050
movzx eax, byte [ebx]
jmp 0x401073
mov eax, dword [ebx]
mov edx, eax
not edx
and edx, 0x80808080
lea ecx, [eax + eax]
and ecx, 0x4a4a4a4a
neg ecx
add ecx, eax
add ecx, 0x24242424
test ecx, edx
je 0x4010b1
cmp al, 0x25
je 0x40110d
test al, al
mov esi, dword [esp + 0x24]
je 0x4036cc
cmp dword [ebp + 8], 0
je 0x401037
mov ecx, edi
sub ecx, esi
cmp ecx, 0x1ff
jl 0x401037
add dword [esp + 0x48], ecx
push ecx
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x401030
jmp 0x4036f9
mov ecx, dword [esp + 0x24]
sub ecx, edi
add ecx, 0x200
jmp 0x4010ef
mov dword [edi], eax
add edi, 4
mov eax, dword [ebx + 4]
add ebx, 4
mov edx, eax
not edx
and edx, 0x80808080
lea esi, [eax + eax]
and esi, 0x4a4a4a4a
neg esi
add esi, eax
add esi, 0x24242424
add ecx, 0xfffffffc
test esi, edx
jne 0x401073
lea esi, [eax - 0x1010101]
test edx, esi
jne 0x40107b
cmp dword [ebp + 8], 0
je 0x4010c0
cmp ecx, 4
jge 0x4010c0
jmp 0x401073
add ebx, 2
mov ecx, ebx
xor esi, esi
jmp 0x401120
or esi, 1
inc ecx
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x40112c.33
jmp dword [edx*4 + 0x44b564]
or esi, 4
inc ecx
jmp 0x401120
or esi, 8
inc ecx
jmp 0x401120
or esi, 0x400
inc ecx
jmp 0x401120
or esi, 0x40
inc ecx
jmp 0x401120
test esi, 0x100
jne 0x401165
or esi, 0x100
inc ecx
jmp 0x401120
or esi, 2
inc ecx
jmp 0x401120
test esi, 0x800
jne 0x401176
or esi, 0x800
inc ecx
jmp 0x401120
mov eax, esi
not eax
or eax, 0xffffefff
add esi, eax
add esi, 0x1001
inc ecx
jmp 0x401120
or esi, 0x10
movzx eax, byte [ecx]
jmp 0x401193
dec ecx
mov dword [esp + 0xc], esi
cmp al, 0x2a
mov esi, dword [esp + 0x24]
jne 0x4011b3
mov eax, dword [esp + 0x28]
mov ebx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401203
mov edx, eax
add dl, 0xd0
xor ebx, ebx
cmp dl, 9
ja 0x401203
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ebx
and edx, 0xfffffff5
mov esi, ebx
and esi, 0xa
or ebx, 0xa
imul ebx, esi
xor esi, 0xa
imul esi, edx
add ebx, esi
movzx eax, al
add ebx, eax
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x4011d0
mov esi, dword [esp + 0x24]
mov dword [esp + 4], 0xffffffff
cmp al, 0x2e
jne 0x401291
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x401235
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 4], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x401291
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 4], 0
cmp dl, 9
ja 0x401291
xor esi, esi
nop
nop
nop
nop
nop
nop
movzx eax, al
mov dword [esp + 0x10], eax
mov edx, esi
or edx, 0xa
mov eax, esi
and esi, 0xa
imul edx, esi
xor esi, 0xa
and eax, 0xfffffff5
imul eax, esi
mov esi, eax
add esi, edx
mov eax, dword [esp + 0x10]
add esi, eax
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401250
mov dword [esp + 4], esi
mov esi, dword [esp + 0x24]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
mov dword [esp + 0x30], ebx
ja case.0x4012a0.74
jmp dword [eax*4 + 0x44b664]
inc ecx
jmp case.0x4012a0.74
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x4012e4
or dword [esp + 0xc], 0x20
add ecx, 2
jmp case.0x4012a0.74
lea ebx, [ecx + 1]
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x4012f9
cmp edx, 0x36
jne 0x40130b
cmp byte [ecx + 2], 0x34
jne 0x4012ff
or dword [esp + 0xc], 0x20
jmp 0x401303
cmp byte [ecx + 1], 0x68
je 0x4012e7
inc ecx
jmp 0x4012ea
inc ecx
jmp 0x401309
add ecx, 2
mov eax, dword [esp + 0xc]
or eax, 0x200
mov dword [esp + 0xc], eax
jmp case.0x4012a0.74
cmp byte [ecx + 2], 0x32
je 0x401303
mov ecx, ebx
jmp case.0x4012a0.74
add ecx, 3
movzx edx, byte [ecx]
mov ebx, ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
mov dword [esp + 0x50], ebx
ja case.0x40131e.67
jmp dword [eax*4 + 0x44b72c]
mov esi, edx
mov edx, dword [esp + 0xc]
test dl, 0x20
jne 0x4015e2
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
mov eax, esi
cmp al, 0x75
je 0x40208c
mov dword [esp + 0x14], 0
test ecx, ecx
mov esi, dword [esp + 4]
jns 0x4020ac
neg ecx
or edx, 0x80
jmp 0x4020ac
mov ecx, edx
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 4]
jmp 0x401647
mov esi, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x40138a
mov esi, str.0123456789abcdefxp
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x4013a0
mov ecx, eax
add dword [esp + 0x28], 8
mov dword [esp + 0x10], ecx
mov eax, ecx
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x54]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
lea ecx, [esp + 0x30]
lea edx, [esp + 0x38]
call fcn.00403720
add esp, 0x18
test eax, eax
mov ecx, dword [esp + 0xc]
je 0x401c1d
mov eax, ecx
not eax
or eax, 0xffffff7f
add ecx, eax
add ecx, 0x81
jmp 0x401c1d
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x41
je 0x40140b
mov eax, str.0123456789abcdefxp
mov dword [esp + 8], eax
mov dword [esp + 0x54], edx
mov ecx, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x401423
mov ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x28]
mov ebx, dword [eax + 4]
test ebx, ebx
mov edx, dword [esp + 0xc]
jns 0x40143c
or edx, 0x80
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov al, 0x2d
test dl, dl
mov dword [esp + 0x1c], ecx
js 0x401588
mov al, 0x20
test dl, 4
jne 0x401588
mov al, 0x2b
test dl, 2
jne 0x401588
mov dword [esp + 0x10], 0
jmp 0x401592
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov esi, edx
cmp dl, 0x42
je 0x40148a
mov dword [esp + 0x2c], str.0123456789abcdefxp
mov byte [esp + 0x40], 0
mov edx, dword [esp + 0xc]
mov eax, edx
xor eax, 0xfffffff7
mov ecx, edx
or ecx, 8
test ecx, eax
je 0x4014b8
mov eax, esi
cmp al, 0x42
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x42], al
mov dword [esp + 0x20], 0x180
mov ecx, 1
jmp 0x4016b6
mov esi, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x4014d9
mov esi, str.0123456789abcdefxp
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, dword [esp + 4]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov ebx, 6
cmp ecx, 0xffffffff
je 0x4014f7
mov ebx, eax
lea eax, [ebx - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x54]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x7c]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x30]
lea edx, [esp + 0x38]
call fcn.00403720
add esp, 0x18
test eax, eax
je 0x401535
or dword [esp + 0xc], 0x80
mov eax, dword [esp + 0x20]
cmp eax, ebx
jb 0x40153f
mov eax, ebx
mov dword [esp + 4], esi
mov ecx, eax
cmp eax, 2
mov dword [esp + 0x10], ebx
jb 0x40162b
mov eax, ebx
mov ebx, dword [esp + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ebx + ecx - 1], 0x30
jne 0x401bc4
mov esi, ecx
lea edx, [eax - 1]
dec esi
mov ecx, esi
cmp esi, 2
jb 0x401bc6
cmp eax, 1
mov eax, edx
jne 0x401560
jmp 0x401bc6
mov byte [esp + 0x41], al
mov al, 1
mov dword [esp + 0x10], eax
mov esi, ebx
and esi, 0xfffff
sar ebx, 0x14
mov ecx, ebx
xor ecx, 0xfffff800
or ebx, 0x7ff
and ebx, ecx
mov dword [esp + 0xc], edx
je 0x401a4c
add ebx, 0xfffffc01
mov dword [esp + 0x4c], ebx
mov eax, 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, eax
mov eax, 0xfffff
adc esi, eax
add ecx, 1
mov dword [esp + 0x1c], ecx
adc esi, 0
jmp 0x401a63
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 8]
mov dword [esp + 0x10], eax
mov eax, dword [ecx]
mov ebx, dword [ecx + 4]
mov ecx, esi
cmp cl, 0x75
je 0x40209a
test ebx, ebx
mov esi, dword [esp + 4]
jns 0x40207e
neg eax
mov ecx, 0
sbb ecx, ebx
or edx, 0x80
mov dword [esp + 0x14], ecx
mov ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x28], eax
jmp 0x4020ac
mov edx, ebx
jmp 0x401bc6
mov ecx, edx
mov edx, dword [esp + 0xc]
mov eax, edx
xor eax, 0x10
or edx, 0xffffffef
and edx, eax
mov esi, 8
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov eax, ecx
cmp cl, 0x58
je 0x40165e
mov dword [esp + 0x2c], str.0123456789abcdefxp
mov dword [esp + 0x20], 0x440
mov byte [esp + 0x40], 0
mov ecx, 4
test dl, 8
je 0x4016ba
cmp al, 0x58
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x42], al
jmp 0x4016ba
mov byte [esp + 0x40], 0
mov edx, dword [esp + 0xc]
test dl, 8
je 0x4016a1
mov word [esp + 0x40], 0x3001
mov dword [esp + 0x20], 0x330
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov ecx, 3
mov esi, dword [esp + 4]
mov dword [esp + 4], esi
mov dword [esp + 0xc], edx
test dl, 0x20
jne 0x4016d8
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
xor edx, edx
jmp 0x4016e8
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov edx, dword [eax + 4]
add eax, 8
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], 0
mov byte [esp + 0x34], 0
mov eax, esi
or eax, edx
jne 0x40170b
mov byte [esp + 0x40], 0
cmp dword [esp + 4], 0
je 0x401a30
mov eax, 0xffffffff
shl eax, cl
not eax
and eax, esi
mov ebx, dword [esp + 0x20]
mov cl, bh
shrd esi, edx, cl
mov ecx, dword [esp + 0x2c]
movzx eax, byte [ecx + eax]
mov byte [esp + 0x263], al
mov eax, ebx
mov cl, ah
shr edx, cl
test ah, 0x20
mov dword [esp + 0x10], ebx
jne 0x401741
mov ebx, esi
jmp 0x401745
mov ebx, edx
xor edx, edx
mov eax, ebx
or eax, edx
jne 0x401767
mov ecx, 1
cmp dword [esp + 4], 2
jge 0x401767
lea eax, [esp + 0x263]
mov dword [esp + 0x14], eax
jmp 0x40186c
lea eax, [esp + 0x263]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x264]
nop
nop
nop
nop
nop
nop
nop
test byte [esp + 0xc], 0x40
mov dword [esp + 8], edx
mov esi, ebx
jne 0x4017a0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
jmp 0x4017f0
mov ebx, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x20], ebx
mov ecx, ebx
shr ecx, 4
xor ecx, ebx
test cl, 0xf
mov ecx, dword [esp + 0x14]
je 0x4017c3
mov dword [esp + 0x10], ebx
mov dword [esp + 0x1c], ecx
jmp 0x4017f0
and ebx, 0xfffffff0
mov dword [esp + 0x20], ebx
movzx ecx, byte [0x44e001]
xor cl, 0xaf
mov byte [eax - 2], cl
add eax, 0xfffffffe
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x10], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, 0xffffffff
mov eax, dword [esp + 0x10]
mov cl, ah
shl ebx, cl
not ebx
and ebx, esi
mov edx, dword [esp + 0x20]
mov cl, dh
mov eax, dword [esp + 8]
shrd esi, eax, cl
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x2c]
movzx ecx, byte [ecx + ebx]
mov ebx, dword [esp + 0x1c]
mov esi, ebx
mov byte [ebx - 1], cl
mov cl, dh
shr eax, cl
mov dword [esp + 0x10], edx
test dh, 0x20
jne 0x401840
mov ebx, dword [esp + 0x14]
mov edx, eax
jmp 0x401844
mov ebx, eax
xor edx, edx
mov eax, esi
lea ecx, [esi - 1]
mov dword [esp + 0x14], ecx
mov ecx, ebx
or ecx, edx
jne 0x401780
lea ecx, [esp + 0x264]
sub ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 4]
jl 0x401780
mov edx, dword [esp + 0x10]
shr edx, 4
mov eax, edx
not eax
or eax, 0xf
add eax, edx
shl eax, 0x18
add eax, ecx
add eax, 0x1000000
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
xor esi, esi
jmp 0x402359
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov ebx, str.null
test eax, eax
je 0x4018a6
mov ebx, eax
mov ecx, dword [esp + 4]
mov eax, ecx
test ecx, ecx
jns 0x4018b5
mov eax, 0xffffffff
test bl, 3
mov dword [esp + 0x14], ebx
je 0x40270f
lea edx, [eax + ebx]
test ecx, ecx
je 0x402a45
cmp byte [ebx], 0
mov ecx, ebx
je 0x402a43
inc ecx
lea esi, [eax - 1]
test cl, 3
je 0x402a0a
test esi, esi
je 0x402a45
cmp byte [ecx], 0
je 0x402a43
mov ecx, dword [esp + 0x14]
add ecx, 2
lea esi, [eax - 2]
test cl, 3
je 0x402a0a
test esi, esi
je 0x402a45
cmp byte [ecx], 0
je 0x402a43
mov ecx, dword [esp + 0x14]
add ecx, 3
lea esi, [eax - 3]
test cl, 3
je 0x402a0a
test esi, esi
je 0x402a45
cmp byte [ecx], 0
je 0x402a43
mov ecx, dword [esp + 0x14]
add ecx, 4
add eax, 0xfffffffc
test cl, 3
je 0x402a0c
test eax, eax
jne 0x402a43
jmp 0x402a45
mov byte [esp + 0x263], dl
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x1c], 0
lea eax, [esp + 0x263]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x30], 0
jmp 0x402a70
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x1c], 0
lea eax, [esp + 0x263]
jmp 0x402468
mov eax, dword [esp + 0x28]
fld qword [eax]
add eax, 8
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0xc]
test ebx, 0x100
mov edx, dword [esp + 4]
jne 0x402275
jmp 0x4023dc
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, dword [esp + 0x48]
sub ecx, esi
add ecx, edi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x28], edx
jmp 0x403505
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
lea eax, [esp + 0x264]
jmp 0x402468
xor eax, eax
mov ecx, dword [esp + 0x1c]
or ecx, esi
je 0x401a5b
mov eax, 0xfffffc02
mov dword [esp + 0x4c], eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x2c]
lea ecx, [eax*4]
xor ebx, ebx
mov eax, 0x8000000
shrd ebx, eax, cl
mov edx, 0x8000000
shr edx, cl
test cl, 0x20
je 0x401a88
mov ebx, edx
xor edx, edx
cmp dword [esp + 0x2c], 0xf
mov eax, dword [esp + 0x1c]
jl 0x401a97
xor ebx, ebx
xor edx, edx
shld esi, eax, 8
shl eax, 8
add eax, ebx
mov dword [esp + 0x1c], eax
adc esi, edx
mov edx, dword [esp + 0x10]
movzx ecx, dl
lea eax, [esp + 0x40]
mov word [ecx + eax + 1], 0x7830
or dl, 2
mov byte [esp + 0x40], dl
mov ecx, esi
shr ecx, 0x1c
mov eax, dword [esp + 8]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xa4], cl
cmp dword [esp + 0x2c], 0
je 0x401bae
movzx ecx, byte [section..data]
mov edx, ecx
add dl, cl
and dl, 0xbc
sub cl, dl
add cl, 0x5e
mov byte [esp + 0xa5], cl
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0xa6]
mov dword [esp + 0x18], eax
mov edx, ecx
cmp ecx, 0xd
mov ebx, dword [esp + 0x4c]
jb 0x401b17
mov edx, 0xd
mov eax, ecx
sub eax, edx
mov dword [esp + 0x10], eax
jg 0x401b29
mov dword [esp + 0x10], 0
mov dword [esp + 4], edx
mov eax, edx
and eax, 3
je 0x401e8e
xor ebx, ebx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
shr eax, 0x18
and eax, 0xf
mov ecx, dword [esp + 8]
movzx eax, byte [ecx + eax]
shld esi, edx, 4
mov byte [esp + ebx + 0xa6], al
mov eax, dword [esp + 0x14]
shl edx, 4
inc ebx
cmp eax, ebx
jne 0x401b50
mov dword [esp + 0x1c], edx
lea eax, [esp + 0xa6]
lea edx, [eax + ebx]
sub dword [esp + 4], ebx
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x2c]
cmp ecx, 4
jae 0x401e9e
lea esi, [esp + 0xa6]
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x10]
jmp 0x401f21
lea edx, [esp + 0xa5]
mov dword [esp + 0x18], edx
xor ecx, ecx
mov dword [esp + 4], edx
jmp 0x401f1d
mov edx, eax
add dword [esp + 0x28], 8
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x3c]
cmp eax, 0xfffffffd
jl 0x401bf5
cmp eax, dword [esp + 0x10]
jg 0x401bf5
test eax, eax
jle 0x40206f
cmp eax, ecx
jl 0x4027fb
xor esi, esi
jmp 0x402422
cmp edx, ecx
jle 0x401c08
dec ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 4]
jmp 0x401c1d
xor eax, eax
sub edx, 1
mov esi, dword [esp + 4]
jb 0x401c15
mov eax, edx
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
mov dword [esp + 0xc], ecx
test cl, cl
js 0x401c43
mov al, 0x20
test byte [esp + 0xc], 4
jne 0x401c43
mov al, 0x2b
test byte [esp + 0xc], 2
je 0x401c4c
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x18]
cmp eax, 0x7000
jne 0x401c6c
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], edx
jmp 0x402a6c
mov dword [esp + 0x1c], eax
movzx ecx, byte [edx]
mov byte [esp + 0xa4], cl
lea eax, [esp + 0xa5]
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x10]
test ecx, ecx
mov ebx, edx
je 0x401cb8
movzx ecx, byte [section..data]
mov edx, ecx
add dl, cl
and dl, 0xbc
sub cl, dl
add cl, 0x5e
mov byte [esp + 0xa5], cl
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0xa6]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
lea edx, [eax - 1]
cmp edx, ecx
jbe 0x401cca
lea eax, [ecx + 1]
mov dword [esp + 0x20], eax
cmp eax, 2
mov dword [esp + 0x14], eax
jb 0x401d9a
mov dword [esp + 4], esi
mov esi, ecx
cmp ecx, edx
jb 0x401ce3
mov esi, edx
lea eax, [esi - 1]
mov edx, 1
cmp eax, 7
mov eax, esi
jb 0x401d69
mov dword [esp + 0x2c], eax
mov esi, eax
and esi, 0xfffffff8
xor edx, edx
mov ecx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx + edx + 1]
mov byte [ecx + edx], al
movzx eax, byte [ebx + edx + 2]
mov byte [ecx + edx + 1], al
movzx eax, byte [ebx + edx + 3]
mov byte [ecx + edx + 2], al
movzx eax, byte [ebx + edx + 4]
mov byte [ecx + edx + 3], al
movzx eax, byte [ebx + edx + 5]
mov byte [ecx + edx + 4], al
movzx eax, byte [ebx + edx + 6]
mov byte [ecx + edx + 5], al
movzx eax, byte [ebx + edx + 7]
mov byte [ecx + edx + 6], al
movzx eax, byte [ebx + edx + 8]
mov byte [ecx + edx + 7], al
add edx, 8
cmp esi, edx
jne 0x401d10
add ecx, edx
mov dword [esp + 8], ecx
inc edx
mov eax, dword [esp + 0x2c]
and eax, 7
mov esi, dword [esp + 4]
je 0x401d9a
add ebx, edx
xor edx, edx
mov ecx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
mov esi, eax
movzx eax, byte [ebx + edx]
mov byte [ecx + edx], al
mov eax, esi
inc edx
cmp esi, edx
jne 0x401d80
add ecx, edx
mov dword [esp + 8], ecx
mov esi, dword [esp + 4]
movzx eax, byte [esi + 0xe]
mov byte [esp + 0x35], al
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x401db4
dec eax
mov byte [esp + 0x36], 0x2b
mov esi, eax
jmp 0x401dc0
mov byte [esp + 0x36], 0x2d
mov esi, 1
sub esi, eax
cmp esi, 0x64
mov eax, 4
sbb eax, 0xffffffff
mov dword [esp + 4], eax
mov eax, esi
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 0x1c], eax
mov ebx, esi
mov eax, esi
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 + 0x1c]
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 + 4]
mov byte [esp + 0x34], dl
mov byte [esp + edx + 0x34], bl
add al, 0x30
mov byte [esp + edx + 0x33], al
cmp esi, 0x64
jb 0x401e74
mov ebx, edx
mov eax, esi
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 + 0x34]
mov byte [ebx + eax - 2], dl
mov esi, dword [esp + 0x10]
sub esi, dword [esp + 0x14]
inc esi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x1c], 0x3000001
jmp 0x4029f1
lea edx, [esp + 0xa6]
cmp ecx, 4
jb 0x401b9a
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], eax
mov eax, esi
shr eax, 0x18
and eax, 0xf
mov ebx, dword [esp + 8]
movzx eax, byte [ebx + eax]
mov byte [edx], al
mov eax, esi
shr eax, 0x14
and eax, 0xf
movzx eax, byte [ebx + eax]
mov byte [edx + 1], al
mov eax, esi
shr eax, 0x10
and eax, 0xf
movzx eax, byte [ebx + eax]
mov byte [edx + 2], al
mov eax, esi
mov esi, dword [esp + 0x14]
shld esi, ecx, 0x10
shl ecx, 0x10
shr eax, 0xc
and eax, 0xf
movzx eax, byte [ebx + eax]
mov byte [edx + 3], al
mov eax, dword [esp + 4]
add edx, 4
mov dword [esp + 0x14], esi
add eax, 0xfffffffc
jne 0x401eb0
lea esi, [esp + 0xa6]
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x54]
cmp al, 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x35], al
test ebx, ebx
js 0x401f3e
mov byte [esp + 0x36], 0x2b
jmp 0x401f45
mov byte [esp + 0x36], 0x2d
neg ebx
cmp ebx, 0x3e7
mov dword [esp + 0x10], ecx
mov dword [esp + 8], edx
jg 0x401f68
cmp ebx, 0x63
jle 0x402053
mov dword [esp + 0x14], 5
jmp 0x401f70
mov dword [esp + 0x14], 6
mov dword [esp + 0x1c], 0
mov eax, ebx
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea esi, [edx + edx*4]
mov eax, ebx
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
mov eax, ebx
sub eax, esi
mov esi, ebx
mov ebx, dword [esp + 0x14]
mov byte [esp + 0x34], bl
or al, 0x30
mov byte [esp + ebx + 0x34], 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 + 0x33], cl
cmp byte [esp + 0x1c], 0
jne 0x402873
mov eax, esi
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 + 0x34]
mov byte [ebx + eax - 2], cl
cmp esi, 0x3e8
jl 0x402873
mov eax, esi
mov ecx, 0x10624dd3
mul ecx
mov ecx, edx
shr ecx, 6
mov eax, ecx
mov edx, 0x1999999a
mul edx
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
or cl, 0x30
lea eax, [esp + 0x34]
mov byte [ebx + eax - 3], cl
jmp 0x402873
cmp ebx, 9
jle 0x40284d
mov dword [esp + 0x14], 4
mov al, 1
mov dword [esp + 0x1c], eax
jmp 0x401f78
mov esi, edx
cmp edx, ecx
jl 0x402077
mov esi, ecx
sub esi, eax
jmp 0x402422
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
jmp 0x4020aa
mov dword [esp + 0x14], 0
mov esi, dword [esp + 4]
jmp 0x4020ac
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
mov esi, dword [esp + 4]
mov ecx, eax
mov dword [esp + 0xc], edx
test edx, 0x100
jne 0x402240
mov dword [esp + 0x1c], ecx
movzx eax, byte [0x44e001]
xor al, 0xaf
mov byte [esp + 8], al
mov esi, 0x200
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + 0x1c]
cmp ecx, 0x5f5e100
mov edx, dword [esp + 0x14]
mov eax, edx
sbb eax, 0
jb 0x402120
push 0
push 0x5f5e100
push edx
push ecx
mov ebx, ecx
call fcn.0040c460
mov dword [esp + 0x14], edx
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov ecx, ebx
mov dword [esp + 0x1c], eax
jmp 0x402130
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
lea eax, [esp + 0x5c]
lea ebx, [eax + esi]
test byte [esp + 0xc], 0x40
jne 0x402190
mov dword [esp + 0x10], ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ebx, eax
movzx eax, word [ebx + ebx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x62], ax
add esi, 0xfffffffe
cmp ecx, 0x64
mov ecx, edx
jae 0x402150
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x10]
jmp 0x402200
test ecx, ecx
mov edx, dword [esp + 0x2c]
jne 0x4021ce
jmp 0x402200
mov dword [esp + 0x10], ebx
mov ebx, edx
mov eax, ecx
mov edx, 0xcccccccd
mul edx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ecx, eax
or cl, 0x30
mov byte [esp + esi + 0x63], cl
dec esi
mov ecx, edx
mov edx, ebx
mov ebx, dword [esp + 0x10]
test ecx, ecx
je 0x402200
test byte [esp + 0xc], 0x40
je 0x4021a0
cmp edx, 3
je 0x4021e1
mov dword [esp + 0x10], ebx
inc edx
jmp 0x4021a4
movzx eax, byte [esp + 8]
mov byte [esp + esi + 0x63], al
dec esi
dec ebx
xor edx, edx
test ecx, ecx
jne 0x4021ce
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
or eax, dword [esp + 0x14]
jne 0x402217
jmp 0x4022b8
inc edx
mov byte [esp + esi + 0x63], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x64
cmp eax, ebx
je 0x4020e0
test byte [esp + 0xc], 0x40
je 0x402211
cmp edx, 3
jne 0x402210
movzx eax, byte [esp + 8]
mov byte [esp + esi + 0x63], al
dec esi
dec ebx
xor edx, edx
jmp 0x402217
mov eax, 1
cmp esi, 0xffffffff
je 0x40224c
mov eax, esi
xor edx, edx
mov esi, ecx
cmp ecx, 0x400
mov ecx, dword [esp + 0x14]
sbb ecx, 0
mov ebx, dword [esp + 0xc]
jb 0x402265
mov edx, eax
mov dword [esp + 0x58], esi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x5c], eax
fild qword [esp + 0x58]
xor eax, eax
test ebx, 0x800
sete al
fld qword [eax*8 + 0x44b550]
cmp ebx, 0x3ffffff
ja 0x4022b1
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x402362
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x402362
fstp st(0)
fstp st(0)
jmp 0x4023dc
cmp byte [esp + esi + 0x64], 0x30
sete al
cmp esi, 0x200
setne cl
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov dl, 0x2d
cmp byte [esp + 0xc], 0
js 0x4022ee
mov dl, 0x20
test byte [esp + 0xc], 4
jne 0x4022ee
mov dl, 0x2b
test byte [esp + 0xc], 2
je 0x4022f7
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], dl
and cl, al
movzx eax, cl
add esi, eax
lea ecx, [esp + esi]
add ecx, 0x64
lea eax, [esi - 0x200]
neg eax
mov dword [esp + 0x20], eax
cmp esi, 0x200
jne 0x402330
mov byte [ecx - 1], 0x30
dec ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], 1
mov eax, 1
jmp 0x402334
mov dword [esp + 0x14], ecx
xor esi, esi
cmp dword [esp + 4], 0
jg 0x402345
mov dword [esp + 4], 0
mov ecx, eax
and ecx, 0x3000000
xor eax, 0x3000000
lea eax, [eax + ecx*2]
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 4]
jmp 0x402a70
fdiv st(2), st(0)
lea ecx, [ebx + 0x1000000]
cmp ebx, 0x2ffffff
ja 0x4023d6
fucom st(2)
fnstsw ax
sahf
jbe 0x402384
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4023d6
fdiv st(2), st(0)
lea ecx, [ebx + 0x2000000]
cmp ebx, 0x1ffffff
ja 0x4023d6
fucom st(2)
fnstsw ax
sahf
jbe 0x4023a6
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4023d6
fdiv st(2), st(0)
lea ecx, [ebx + 0x3000000]
cmp ebx, 0xffffff
ja 0x4023d6
fucom st(2)
fnstsw ax
sahf
jbe 0x4036bd
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x4036bd
fstp st(0)
fstp st(0)
mov ebx, ecx
mov ecx, 6
cmp edx, 0xffffffff
je 0x4023e8
mov ecx, edx
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x54]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov esi, ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x30]
lea edx, [esp + 0x38]
call fcn.00403720
add esp, 0x18
test eax, eax
je 0x40241e
or ebx, 0x80
mov dword [esp + 0xc], ebx
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
cmp byte [esp + 0xc], 0
js 0x402447
mov al, 0x20
test byte [esp + 0xc], 4
jne 0x402447
mov al, 0x2b
test byte [esp + 0xc], 2
je 0x402450
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov ecx, dword [esp + 0x3c]
cmp ecx, 0x7000
jne 0x402471
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], eax
jmp 0x402a6c
test ecx, ecx
mov dword [esp + 0x10], esi
jle 0x402500
xor edx, edx
test byte [esp + 0xc], 0x40
je 0x40249f
mov ebx, 0x258
sub ebx, ecx
mov eax, ebx
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ebx
sub edx, eax
cmp ecx, dword [esp + 0x20]
jae 0x402595
mov esi, edx
xor eax, eax
lea ebx, [esp + 0xa4]
jmp 0x4024da
mov edx, ebx
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + eax]
inc ebx
mov byte [edx], cl
inc eax
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jae 0x4025e9
test byte [esp + 0xc], 0x40
je 0x4024c0
inc esi
cmp esi, 4
jne 0x4024c0
mov esi, dword [esp + 0xc]
and esi, 0x40
shr esi, 6
movzx ecx, byte [0x44e001]
xor cl, 0xaf
mov byte [ebx], cl
inc ebx
jmp 0x4024c0
mov byte [esp + 0xa4], 0x30
lea edx, [esp + 0xa5]
test esi, esi
je 0x402533
movzx eax, byte [section..data]
mov edx, eax
add dl, al
and dl, 0xbc
sub al, dl
add al, 0x5e
mov byte [esp + 0xa5], al
lea edx, [esp + 0xa6]
neg ecx
mov ebx, esi
cmp esi, ecx
jl 0x40253d
mov ebx, ecx
test ebx, ebx
mov dword [esp + 0x14], ebx
je 0x402716
mov eax, edx
and eax, 3
je 0x402716
mov ecx, edx
mov esi, edx
not esi
and esi, 3
lea edx, [ebx - 1]
cmp esi, edx
jb 0x402566
mov esi, edx
lea eax, [esi + 1]
push eax
push 0x30
mov ebx, ecx
push ecx
mov dword [esp + 0x10], edx
call fcn.0040c660
mov ecx, dword [esp + 0x10]
add esp, 0xc
add ebx, esi
inc ebx
mov dword [esp + 8], ebx
sub ecx, esi
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
jmp 0x40271c
xor eax, eax
lea ebx, [esp + 0xa4]
jmp 0x4025b8
mov esi, ebx
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + eax]
inc ebx
mov byte [esi], cl
inc eax
cmp eax, dword [esp + 0x20]
jae 0x40267c
test byte [esp + 0xc], 0x40
je 0x4025a0
inc edx
cmp edx, 4
jne 0x4025a0
mov esi, dword [esp + 0xc]
and esi, 0x40
shr esi, 6
movzx ecx, byte [0x44e001]
mov edx, ecx
add dl, cl
and dl, 0x5e
sub cl, dl
mov edx, esi
add cl, 0xaf
mov byte [ebx], cl
inc ebx
jmp 0x4025a0
mov dword [esp + 8], ebx
cmp dword [esp + 0x10], 0
je 0x402615
movzx ecx, byte [section..data]
mov ch, cl
add ch, cl
and ch, 0xbc
sub cl, ch
add cl, 0x5e
mov byte [edx + 1], cl
add edx, 2
mov ecx, dword [esp + 0x3c]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x20]
mov esi, edx
sub esi, ecx
cmp esi, dword [esp + 0x10]
mov esi, dword [esp + 0x10]
jbe 0x40262e
lea edx, [ecx + esi]
mov dword [esp + 0x20], edx
cmp eax, edx
jae 0x402660
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + eax]
mov byte [esi], cl
inc esi
inc eax
mov edx, dword [esp + 0x20]
cmp eax, edx
jb 0x402640
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x10]
lea eax, [esp + 0xa4]
sub ebx, eax
add ebx, 0x3000000
mov dword [esp + 0x1c], ebx
sub esi, edx
add esi, ecx
jmp 0x40292a
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jae 0x40280e
mov dword [esp + 8], ecx
mov ecx, eax
not ecx
and ecx, dword [esp + 8]
not dword [esp + 8]
and dword [esp + 8], eax
mov dword [esp + 4], ecx
mov eax, ecx
mov ecx, dword [esp + 8]
sub eax, ecx
test byte [esp + 0xc], 0x40
jne 0x403672
test eax, eax
mov dword [esp + 0x14], edx
je 0x40364b
mov dword [esp + 0x1c], eax
mov eax, ebx
and eax, 3
je 0x403647
mov edx, 2
sub edx, esi
and edx, 3
not ecx
mov eax, dword [esp + 4]
add eax, ecx
cmp edx, eax
jb 0x4026e6
mov edx, eax
mov dword [esp + 4], eax
lea eax, [edx + 1]
push eax
push 0x30
push ebx
mov ebx, edx
call fcn.0040c660
add esp, 0xc
mov eax, dword [esp + 4]
sub eax, ebx
add ebx, esi
add ebx, 2
mov edx, dword [esp + 0x14]
jmp 0x40364b
mov ecx, ebx
jmp 0x402a0c
mov dword [esp + 8], edx
mov ecx, ebx
cmp ecx, 4
jl 0x402768
mov eax, ecx
cmp ecx, 7
jl 0x40272d
mov eax, 7
neg eax
lea esi, [ecx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
push dword [esp + 0x10]
mov dword [esp + 0x10], ecx
call fcn.0040c660
mov ecx, dword [esp + 0x10]
add esp, 0xc
sub ecx, esi
add ecx, 0xfffffffc
mov eax, dword [esp + 8]
add eax, esi
add eax, 4
mov dword [esp + 8], eax
mov esi, dword [esp + 0x10]
test ecx, ecx
je 0x40278c
push ecx
push 0x30
mov ebx, dword [esp + 0x10]
push ebx
mov dword [esp + 0x10], ecx
call fcn.0040c660
add esp, 0xc
add ebx, dword [esp + 4]
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
lea ecx, [eax + ebx]
cmp ecx, esi
jle 0x40279f
mov eax, esi
sub eax, ebx
mov dword [esp + 0x20], eax
test eax, eax
mov dword [esp + 4], eax
je 0x4028aa
mov edx, esi
cmp esi, ecx
jl 0x4027b3
mov edx, ecx
mov dword [esp + 0x1c], edx
mov ecx, eax
and ecx, 3
je 0x4028b8
xor esi, esi
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x18]
lea edx, [ebx + 1]
mov dword [esp + 0x18], edx
movzx edx, byte [ebx]
mov byte [eax + esi], dl
inc esi
cmp ecx, esi
jne 0x4027d0
add eax, esi
mov dword [esp + 8], eax
mov ecx, dword [esp + 4]
sub ecx, esi
mov ebx, dword [esp + 0x14]
jmp 0x4028ba
mov edx, ecx
not ecx
and ecx, eax
not eax
and eax, edx
sub eax, ecx
mov esi, eax
jmp 0x402422
mov esi, dword [esp + 0x10]
mov ecx, ebx
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x1c], ecx
test esi, esi
je 0x4028b0
movzx eax, byte [section..data]
mov ecx, eax
add cl, al
and cl, 0xbc
sub al, cl
add al, 0x5e
mov byte [ebx], al
inc ebx
mov dword [esp + 8], ebx
jmp 0x40292a
mov eax, ebx
mov ecx, 0x66666667
imul ecx
mov byte [esp + 0x34], 3
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ebx, eax
add bl, 0x30
mov byte [esp + 0x37], bl
add dword [esp + 0x28], 8
mov ecx, dword [esp + 8]
mov eax, ecx
sub eax, dword [esp + 4]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x20], ecx
xor ebx, ebx
mov dword [esp + 0x1c], 0x3000001
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x10]
jmp 0x402a70
mov eax, dword [esp + 8]
jmp 0x402914
mov dword [esp + 8], ebx
xor esi, esi
jmp 0x40292a
mov ecx, eax
mov edx, ebx
sub edx, dword [esp + 0x1c]
cmp edx, 0xfffffffc
mov eax, dword [esp + 8]
ja 0x402914
mov edx, dword [esp + 0x18]
lea esi, [edx + 1]
mov dword [esp + 0x18], esi
movzx edx, byte [edx]
mov byte [eax], dl
mov edx, dword [esp + 0x18]
lea esi, [edx + 1]
mov dword [esp + 0x18], esi
movzx edx, byte [edx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x18]
lea esi, [edx + 1]
mov dword [esp + 0x18], esi
movzx edx, byte [edx]
mov byte [eax + 2], dl
mov edx, dword [esp + 0x18]
lea esi, [edx + 1]
mov dword [esp + 0x18], esi
movzx edx, byte [edx]
mov byte [eax + 3], dl
add eax, 4
add ecx, 0xfffffffc
jne 0x4028c9
mov dword [esp + 8], eax
add ebx, dword [esp + 4]
mov esi, dword [esp + 0x10]
sub esi, ebx
mov dword [esp + 0x1c], 0x3000001
mov eax, dword [esp + 0xc]
test eax, 0x100
je 0x4029f1
mov ebx, eax
and ebx, 0x400
sete byte [esp + 0x34]
sete cl
mov byte [esp + 0x35], 0x20
cmp eax, 0x1000000
jb 0x4029f1
mov dword [esp + 0x10], esi
mov byte [esp + 0x2c], cl
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 4], ecx
mov edx, ebx
shr edx, 0xa
mov ecx, 2
sub ecx, edx
mov dword [esp + 0x14], ecx
mov edx, eax
xor edx, 0xfffff7ff
mov esi, eax
or esi, 0x800
shr ebx, 9
or bl, byte [esp + 0x2c]
mov ecx, ebx
xor cl, 3
and esi, edx
je 0x4029d6
mov dword [esp + 0x2c], esi
mov edx, dword [esp + 4]
movzx edx, byte [edx + str._KMGT]
mov esi, dword [esp + 0x14]
mov byte [esp + esi + 0x34], dl
test eax, 0x1000
jne 0x4029e9
cmp dword [esp + 0x2c], 0
mov esi, dword [esp + 0x10]
je 0x4029ed
movzx eax, bl
mov ecx, 4
sub ecx, eax
neg eax
mov byte [esp + eax + 0x38], 0x69
jmp 0x4029ed
mov eax, dword [esp + 4]
movzx eax, byte [eax + str._kMGT]
mov edx, dword [esp + 0x14]
mov byte [esp + edx + 0x34], al
mov esi, dword [esp + 0x10]
mov byte [esp + 0x34], cl
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 8]
sub ecx, eax
mov dword [esp + 0x20], ecx
xor ebx, ebx
mov dword [esp + 0x14], eax
jmp 0x402a70
mov eax, esi
cmp eax, 4
jb 0x402a31
mov edx, dword [ecx]
mov esi, 0x1010100
sub esi, edx
or esi, edx
not esi
test esi, 0x80808080
jne 0x402a35
add eax, 0xfffffffc
add ecx, 4
cmp eax, 3
ja 0x402a11
test eax, eax
je 0x402a43
lea edx, [ecx + eax]
cmp byte [ecx], 0
je 0x402a43
inc ecx
dec eax
jne 0x402a38
mov ecx, edx
mov edx, ecx
add dword [esp + 0x28], 4
sub edx, dword [esp + 0x14]
mov dword [esp + 0x20], edx
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x1c], 0
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x20]
cmp ebx, ecx
jg 0x402a7e
mov ebx, ecx
movsx eax, byte [esp + 0x40]
movsx esi, byte [esp + 0x34]
mov edx, dword [esp + 0x10]
mov dword [esp + 4], ebx
add edx, ebx
add edx, eax
add edx, esi
mov ebx, dword [esp + 0x30]
cmp ebx, edx
jg 0x402aa0
mov ebx, edx
sub ebx, edx
sub dword [esp + 4], ecx
mov ecx, dword [esp + 0xc]
test cl, 1
mov esi, dword [esp + 0x24]
jne 0x402ad2
test cl, 0x10
jne 0x402ac2
mov dword [esp + 0xc], 0
jmp 0x402ad2
mov ecx, dword [esp + 4]
cmp ebx, ecx
jg 0x402acc
mov ebx, ecx
mov dword [esp + 4], ebx
xor ebx, ebx
mov ecx, ebx
mov edx, ebx
mov ebx, dword [esp + 4]
and ecx, ebx
add ecx, ecx
mov dword [esp + 0x30], edx
xor edx, ebx
add edx, ecx
je 0x402fac
test byte [esp + 0xc], 1
jne 0x402c33
mov ebx, dword [esp + 0x30]
test ebx, ebx
jg 0x402b22
jmp 0x402c37
mov edi, eax
mov esi, eax
mov ecx, dword [esp + 8]
sub ebx, ecx
test ebx, ebx
jle 0x402c2c
mov eax, esi
sub eax, edi
add eax, 0x200
mov ecx, ebx
cmp ebx, eax
jl 0x402b33
mov ecx, eax
cmp dword [ebp + 8], 0
jne 0x402b3b
mov ecx, ebx
test ecx, ecx
mov dword [esp + 8], ecx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x24], esi
je 0x402b90
mov eax, edi
and eax, 3
je 0x402b90
mov esi, edi
not esi
and esi, 3
lea ebx, [ecx - 1]
cmp esi, ebx
jb 0x402b62
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x20
push edi
call fcn.0040c660
mov edx, ebx
add esp, 0xc
add edi, esi
inc edi
sub edx, esi
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 8]
cmp edx, 4
jge 0x402b97
jmp 0x402bd7
mov edx, ecx
cmp edx, 4
jl 0x402bd7
mov eax, edx
cmp edx, 7
jl 0x402ba3
mov eax, 7
neg eax
lea esi, [edx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
push edi
mov ebx, edx
call fcn.0040c660
mov edx, ebx
add esp, 0xc
add edi, esi
add edi, 4
sub edx, esi
add edx, 0xfffffffc
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 8]
test edx, edx
je 0x402bf7
push edx
push 0x20
push edi
mov ebx, esi
mov esi, edx
call fcn.0040c660
mov ecx, dword [esp + 0x14]
add esp, 0xc
add edi, esi
mov esi, ebx
mov ebx, dword [esp + 0x30]
cmp dword [ebp + 8], 0
je 0x402b18
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x402b18
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402b10
jmp 0x4036f9
movzx eax, byte [esp + 0x40]
jmp 0x402c37
mov ebx, dword [esp + 0x30]
lea ecx, [esp + 0x41]
mov dword [esp + 0x18], ecx
test al, al
mov dword [esp + 0x30], ebx
jne 0x402cad
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x1c]
mov ebx, eax
shr ebx, 0x18
xor esi, esi
test byte [esp + 0xc], 0x40
je 0x402c7d
and eax, 0xffffff
add eax, dword [esp + 4]
mov ecx, ebx
lea esi, [ebx + 1]
xor edx, edx
div esi
mov esi, edx
mov eax, ebx
not eax
and eax, edx
not esi
and esi, ebx
sub esi, eax
cmp dword [esp + 4], 0
jle 0x403636
mov ecx, dword [esp + 4]
jmp 0x402dd6
mov edi, eax
mov esi, eax
movzx eax, byte [esp + 0x40]
test al, al
je 0x402c47
movsx ecx, al
mov eax, ecx
cmp dword [ebp + 8], 0
je 0x402cd1
mov eax, esi
xor eax, edi
mov edx, esi
not edx
and edx, edi
add edx, edx
sub eax, edx
add eax, 0x200
cmp eax, ecx
jl 0x402cd1
mov eax, ecx
sub cl, al
mov byte [esp + 0x40], cl
test eax, eax
je 0x402d7b
mov ecx, eax
and ecx, 3
je 0x402db0
mov dword [esp + 0x24], eax
mov ebx, esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x18]
lea eax, [esi + 1]
mov dword [esp + 0x18], eax
movzx eax, byte [esi]
mov byte [edi + edx], al
inc edx
cmp ecx, edx
jne 0x402d00
add edi, edx
mov eax, dword [esp + 0x24]
mov ecx, eax
sub ecx, edx
mov esi, ebx
cmp eax, 4
jb 0x402d7b
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x402d30
cmp dword [ebp + 8], 0
je 0x402ca4
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x402ca4
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402ca0
jmp 0x4036f9
mov ecx, eax
cmp eax, 4
jae 0x402d30
jmp 0x402d7b
mov edi, eax
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 4]
sub ecx, dword [esp + 8]
test ecx, ecx
jle 0x402fa3
mov eax, dword [esp + 0x24]
sub eax, edi
add eax, 0x200
mov edx, ecx
mov dword [esp + 8], ecx
mov dword [esp + 4], ecx
cmp ecx, eax
jl 0x402e50
mov dword [esp + 8], eax
cmp dword [ebp + 8], 0
je 0x402e56
test byte [esp + 0xc], 0x40
jne 0x402e65
cmp dword [esp + 8], 0
je 0x402e70
mov eax, edi
and eax, 3
je 0x402e70
mov edx, edi
not edx
and edx, 3
mov eax, dword [esp + 8]
lea ecx, [eax - 1]
cmp edx, ecx
jb 0x402e22
mov edx, ecx
mov dword [esp + 0x2c], edx
lea eax, [edx + 1]
push eax
push 0x30
push edi
mov dword [esp + 0x28], ecx
call fcn.0040c660
mov edx, dword [esp + 0x28]
add esp, 0xc
mov eax, dword [esp + 0x2c]
add edi, eax
inc edi
sub edx, eax
cmp edx, 4
jge 0x402e79
jmp 0x402eb8
cmp dword [ebp + 8], 0
jne 0x402df9
mov eax, dword [esp + 4]
mov dword [esp + 8], eax
test byte [esp + 0xc], 0x40
je 0x402e00
mov edx, dword [esp + 8]
jmp 0x402eb8
mov edx, dword [esp + 8]
cmp edx, 4
jl 0x402eb8
mov eax, edx
cmp edx, 7
jl 0x402e85
mov eax, 7
neg eax
add eax, edx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x2c], eax
add eax, 4
push eax
push 0x30
push edi
mov dword [esp + 0x28], edx
call fcn.0040c660
mov edx, dword [esp + 0x28]
add esp, 0xc
mov eax, dword [esp + 0x2c]
add edi, eax
add edi, 4
sub edx, eax
add edx, 0xfffffffc
test edx, edx
je 0x402f00
test dl, 1
jne 0x402ed0
mov eax, edx
cmp edx, 1
jne 0x402f60
jmp 0x402f00
mov al, 0x30
test byte [esp + 0xc], 0x40
je 0x402ef4
cmp esi, ebx
jne 0x402ef3
movzx eax, byte [0x44e001]
mov ecx, eax
add cl, al
and cl, 0x5e
sub al, cl
add al, 0xaf
xor esi, esi
jmp 0x402ef4
inc esi
mov byte [edi], al
inc edi
lea eax, [edx - 1]
cmp edx, 1
jne 0x402f60
nop
cmp dword [ebp + 8], 0
je 0x402dc6
mov eax, edi
mov edx, dword [esp + 0x24]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402dc6
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402dc0
jmp 0x4036f9
movzx ecx, byte [0x44e001]
mov edx, ecx
add dl, cl
and dl, 0x5e
sub cl, dl
add cl, 0xaf
xor esi, esi
mov byte [edi + 1], cl
add edi, 2
add eax, 0xfffffffe
je 0x402f00
mov cl, 0x30
test byte [esp + 0xc], 0x40
je 0x402f91
cmp esi, ebx
jne 0x402f90
movzx edx, byte [0x44e001]
mov ch, dl
add ch, dl
and ch, 0x5e
sub dl, ch
add dl, 0xaf
xor esi, esi
jmp 0x402f93
inc esi
mov dl, 0x30
mov byte [edi], dl
test byte [esp + 0xc], 0x40
je 0x402f55
cmp esi, ebx
je 0x402f40
inc esi
jmp 0x402f55
movzx eax, byte [esp + 0x40]
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x30]
lea ecx, [esp + 0x41]
mov dword [esp + 0x18], ecx
jmp 0x402fc5
movzx eax, byte [esp + 0x40]
test al, al
je 0x403090
movsx edx, al
mov ecx, esi
sub ecx, edi
add ecx, 0x200
cmp ecx, edx
jl 0x402fe0
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402fe8
mov ecx, edx
sub al, cl
mov byte [esp + 0x40], al
test ecx, ecx
je 0x403049
test cl, 1
jne 0x403000
mov eax, ecx
cmp ecx, 1
jne 0x403020
jmp 0x403049
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi], al
inc edi
mov eax, ecx
not eax
lea eax, [eax + ecx*2]
cmp ecx, 1
je 0x403049
nop
nop
nop
mov ecx, dword [esp + 0x18]
lea edx, [ecx + 1]
mov dword [esp + 0x18], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 0x18]
lea edx, [ecx + 1]
mov dword [esp + 0x18], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
add edi, 2
add eax, 0xfffffffe
jne 0x403020
cmp dword [ebp + 8], 0
je 0x402fc0
mov ecx, edi
not ecx
and ecx, esi
mov eax, esi
not eax
and eax, edi
sub eax, ecx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402fc0
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036f9
mov edi, eax
mov esi, eax
jmp 0x402fc0
mov dword [esp + 0x24], esi
mov dword [esp + 0x30], ebx
mov esi, dword [esp + 0x20]
test esi, esi
mov ebx, dword [esp + 0x14]
jne 0x4030e6
mov eax, dword [esp + 0x10]
test eax, eax
mov esi, dword [esp + 0x24]
jne 0x4032ac
lea eax, [esp + 0x35]
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x34]
test al, al
je 0x4034ed
mov ebx, dword [esp + 0x50]
jmp 0x4033cd
sub esi, dword [esp + 8]
je 0x4030a4
mov eax, dword [esp + 0x24]
sub eax, edi
add eax, 0x200
mov ecx, esi
cmp esi, eax
jl 0x4030f9
mov ecx, eax
cmp dword [ebp + 8], 0
jne 0x403101
mov ecx, esi
cmp ecx, 4
mov dword [esp + 8], ecx
jl 0x403160
lea edx, [ecx - 4]
mov eax, edx
shr eax, 2
inc eax
and eax, 7
je 0x403164
mov dword [esp + 4], edx
shl eax, 2
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebx + edx]
mov dword [edi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x403130
add edi, edx
mov ecx, dword [esp + 8]
sub ecx, edx
add ebx, edx
mov eax, ecx
mov edx, dword [esp + 4]
cmp edx, 0x1c
jae 0x403170
jmp 0x4031b1
mov eax, ecx
jmp 0x4031b1
cmp edx, 0x1c
jb 0x4031b1
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [ebx]
mov dword [edi], eax
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov eax, dword [ebx + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [ebx + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [ebx + 0x18]
mov dword [edi + 0x18], eax
mov eax, dword [ebx + 0x1c]
mov dword [edi + 0x1c], eax
add edi, 0x20
add ebx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x403170
test eax, eax
je 0x403241
mov ecx, eax
and ecx, 7
je 0x403290
mov dword [esp + 4], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
mov esi, ebx
movzx ebx, byte [ebx + edx]
mov byte [edi + edx], bl
mov ebx, esi
inc edx
cmp ecx, edx
jne 0x4031d0
add edi, edx
mov ecx, eax
sub ecx, edx
add ebx, edx
mov esi, dword [esp + 4]
cmp eax, 8
jb 0x403241
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx]
mov byte [edi], al
movzx eax, byte [ebx + 1]
mov byte [edi + 1], al
movzx eax, byte [ebx + 2]
mov byte [edi + 2], al
movzx eax, byte [ebx + 3]
mov byte [edi + 3], al
movzx eax, byte [ebx + 4]
mov byte [edi + 4], al
movzx eax, byte [ebx + 5]
mov byte [edi + 5], al
movzx eax, byte [ebx + 6]
mov byte [edi + 6], al
movzx eax, byte [ebx + 7]
add ebx, 8
mov byte [edi + 7], al
add edi, 8
add ecx, 0xfffffff8
jne 0x403200
cmp dword [ebp + 8], 0
je 0x4030e0
mov eax, edi
mov edx, dword [esp + 0x24]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x4030e0
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036f9
mov edi, eax
mov dword [esp + 0x24], eax
jmp 0x4030e0
mov ecx, eax
cmp eax, 8
jae 0x403200
jmp 0x403241
mov eax, dword [esp + 0x10]
sub eax, edx
je 0x4030b4
mov ebx, edi
not ebx
mov ecx, esi
not ecx
mov dword [esp + 4], ecx
mov dword [esp + 0x10], eax
mov edx, eax
cmp dword [ebp + 8], 0
je 0x4032e1
mov eax, esi
and eax, ebx
mov ecx, dword [esp + 4]
and ecx, edi
sub eax, ecx
add eax, 0x200
mov ecx, dword [esp + 0x10]
mov edx, ecx
cmp ecx, eax
jl 0x4032e1
mov edx, eax
test edx, edx
mov dword [esp + 8], edx
mov dword [esp + 0x24], esi
je 0x403320
mov eax, edi
and eax, 3
je 0x403320
and ebx, 3
lea esi, [edx - 1]
cmp ebx, esi
jb 0x403300
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
push edi
call fcn.0040c660
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov edx, dword [esp + 8]
jmp 0x403322
mov esi, edx
cmp esi, 4
mov ebx, dword [ebp + 8]
jl 0x403361
mov eax, esi
cmp esi, 7
jl 0x403336
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push edi
call fcn.0040c660
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 8]
test esi, esi
je 0x403377
push esi
push 0x30
push edi
call fcn.0040c660
mov edx, dword [esp + 0x14]
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x24]
test ebx, ebx
je 0x4032a0
mov eax, edi
xor eax, esi
mov ecx, dword [esp + 4]
and ecx, edi
add ecx, ecx
sub ecx, eax
cmp ecx, 0x1ff
jl 0x4032a0
add dword [esp + 0x48], ecx
push ecx
push dword [ebp + 0xc]
push esi
call ebx
add esp, 0xc
test eax, eax
je 0x4036f9
mov edi, eax
mov esi, eax
mov edx, dword [esp + 8]
jmp 0x4032a0
movzx eax, byte [esp + 0x34]
test al, al
je 0x4034f1
movsx ecx, al
mov eax, ecx
cmp dword [ebp + 8], 0
je 0x4033f5
mov eax, edi
sub eax, esi
mov edx, eax
xor edx, 0x200
not eax
and eax, 0x200
add eax, eax
sub eax, edx
cmp eax, ecx
jl 0x4033f5
mov eax, ecx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x40349b
mov ecx, eax
and ecx, 3
je 0x4034e0
mov dword [esp + 0x24], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x18]
lea ebx, [esi + 1]
mov dword [esp + 0x18], ebx
movzx ebx, byte [esi]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403420
add edi, edx
mov ecx, eax
sub ecx, edx
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x50]
cmp eax, 4
jb 0x40349b
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x18], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x403450
cmp dword [ebp + 8], 0
je 0x4033c0
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x4033c0
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036f9
mov edi, eax
mov esi, eax
jmp 0x4033c0
mov ecx, eax
cmp eax, 4
jae 0x403450
jmp 0x40349b
mov ebx, dword [esp + 0x50]
test byte [esp + 0xc], 1
je 0x403505
cmp dword [esp + 0x30], 0
jle 0x403505
mov eax, dword [esp + 0x30]
jne 0x403524
inc ebx
jmp 0x40103b
mov ecx, dword [esp + 0x30]
mov eax, ecx
not eax
and eax, edx
not edx
and edx, ecx
sub edx, eax
mov eax, edx
je 0x403505
mov dword [esp + 0x30], eax
mov edx, eax
cmp dword [ebp + 8], 0
je 0x403553
mov eax, edi
sub eax, esi
mov ecx, eax
xor ecx, 0x200
not eax
and eax, 0x200
add eax, eax
sub eax, ecx
mov ecx, dword [esp + 0x30]
mov edx, ecx
cmp ecx, eax
jl 0x403553
mov edx, eax
test edx, edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x24], esi
je 0x4035a0
mov eax, edi
and eax, 3
je 0x4035a0
mov ebx, edi
not ebx
and ebx, 3
lea esi, [edx - 1]
cmp ebx, esi
jb 0x403576
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x20
push edi
call fcn.0040c660
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov ebx, dword [esp + 0x50]
cmp esi, 4
jge 0x4035a7
jmp 0x4035db
mov esi, edx
cmp esi, 4
jl 0x4035db
mov eax, esi
cmp esi, 7
jl 0x4035b3
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x20
push edi
call fcn.0040c660
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
mov ebx, dword [esp + 0x50]
test esi, esi
je 0x4035ed
push esi
push 0x20
push edi
call fcn.0040c660
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0xc]
cmp dword [ebp + 8], 0
je 0x403510
mov eax, edi
sub eax, esi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403510
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036f9
mov edi, eax
mov esi, eax
mov edx, dword [esp + 0xc]
jmp 0x403510
lea eax, [esp + 0x41]
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x30]
jmp 0x403094
mov eax, dword [esp + 0x1c]
cmp eax, 4
jb 0x403672
mov esi, eax
and esi, 0xfffffffc
push esi
push 0x30
push ebx
mov dword [esp + 0x28], eax
call fcn.0040c660
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
add esp, 0xc
add ebx, esi
and eax, 3
mov esi, dword [esp + 0x10]
test eax, eax
jne 0x40368c
jmp 0x402812
mov byte [ebx], 0x30
dec eax
inc ebx
test eax, eax
je 0x402812
test byte [esp + 0xc], 0x40
je 0x40367f
inc edx
cmp edx, 4
jne 0x40367f
mov edx, eax
movzx eax, byte [0x44e001]
mov ecx, eax
add cl, al
and cl, 0x5e
sub al, cl
add al, 0xaf
mov byte [ebx], al
mov eax, edx
xor edx, edx
inc ebx
test eax, eax
jne 0x40368c
jmp 0x402812
fstp st(1)
fdivp st(1)
or ebx, 0x4000000
jmp 0x4023dc
cmp dword [ebp + 8], 0
je 0x4036ff
mov eax, edi
sub eax, esi
lea ecx, [eax + 0x1ff]
cmp ecx, 0x200
jl 0x403702
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
mov edi, eax
mov esi, eax
jmp 0x403702
xor edi, edi
xor esi, esi
jmp 0x403702
mov byte [edi], 0
mov eax, dword [esp + 0x48]
add eax, edi
sub eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret