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 + 0x34], eax
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x30], 0
mov ebx, esi
jmp 0x40103f
mov esi, eax
mov eax, edi
movzx eax, byte [edi]
mov ebx, esi
mov byte [esi], al
inc esi
mov eax, edi
inc eax
test al, 3
mov dword [esp + 0x18], esi
mov edi, eax
je 0x401050
movzx eax, byte [eax]
jmp 0x401073
mov eax, dword [eax]
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 0x4010c5
cmp al, 0x25
je 0x401139
mov esi, dword [esp + 0x18]
test al, al
je 0x40378c
cmp dword [ebp + 8], 0
je 0x401039
mov ecx, esi
sub ecx, ebx
lea edx, [ecx + 1]
cmp edx, 0x200
jl 0x401039
mov eax, ecx
mov edx, dword [esp + 0x30]
and eax, edx
xor edx, ecx
lea edx, [edx + eax*2]
mov dword [esp + 0x30], edx
push ecx
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x401030
jmp 0x4037b1
mov ecx, ebx
sub ecx, esi
add ecx, 0x200
jmp 0x401117
mov dword [edx], eax
add edx, 4
mov dword [esp + 0x18], edx
mov eax, dword [edi + 4]
add edi, 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
mov edx, dword [esp + 0x18]
je 0x4010e0
cmp ecx, 4
jge 0x4010e0
jmp 0x401073
mov ecx, edi
add ecx, 2
xor edi, edi
mov esi, dword [esp + 0x18]
jmp 0x401150
or edi, 1
inc ecx
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x40115c.33
jmp dword [edx*4 + 0x44d564]
or edi, 4
inc ecx
jmp 0x401150
or edi, 8
inc ecx
jmp 0x401150
mov eax, edi
xor eax, 0x400
add eax, edi
and edi, 0xfffffbff
sub eax, edi
inc ecx
mov edi, eax
jmp 0x401150
or edi, 0x40
inc ecx
jmp 0x401150
test edi, 0x100
jne 0x4011a2
or edi, 0x100
inc ecx
jmp 0x401150
or edi, 2
inc ecx
jmp 0x401150
mov eax, edi
or eax, 0x800
mov edx, edi
xor edx, 0xfffff7ff
test eax, edx
je 0x401180
or edi, 0x1000
mov eax, edi
jmp 0x401180
mov eax, edi
not eax
or eax, 0xffffffef
add edi, eax
add edi, 0x11
movzx eax, byte [ecx]
jmp 0x4011d1
dec ecx
cmp al, 0x2a
mov dword [esp + 0x38], ebx
jne 0x4011f1
mov eax, dword [esp + 0x34]
mov edx, dword [eax]
mov dword [esp + 8], edx
add eax, 4
mov dword [esp + 0x34], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401235
mov dword [esp + 8], 0
cmp al, 0x30
jl 0x401235
mov dword [esp + 8], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x39
ja 0x4012ae
movzx eax, al
mov edx, dword [esp + 8]
lea edx, [edx + edx*4]
lea eax, [eax + edx*2]
add eax, 0xffffffd0
mov dword [esp + 8], eax
movzx eax, byte [ecx + 1]
inc ecx
cmp al, 0x2f
jg 0x401210
mov dword [esp + 0x28], 0xffffffff
cmp al, 0x2e
jne 0x4012b6
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x401263
mov eax, dword [esp + 0x34]
mov edx, dword [eax]
mov dword [esp + 0x28], edx
add eax, 4
mov dword [esp + 0x34], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x4012b6
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x28], 0
cmp dl, 9
ja 0x4012b6
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [ebx + ebx*4]
lea eax, [eax + edx*2]
mov ebx, eax
and ebx, 0xffffffcf
add ebx, ebx
xor eax, 0x30
sub ebx, eax
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401280
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x38]
jmp 0x4012b6
mov dword [esp + 0x28], 0xffffffff
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012c1.74
jmp dword [eax*4 + 0x44d664]
inc ecx
movzx edx, byte [ecx]
mov dword [esp + 0x54], ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x4012e1.67
mov ecx, edi
jmp dword [eax*4 + 0x44d72c]
test cl, 0x20
jne 0x4015d3
mov eax, dword [esp + 0x34]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], 0
cmp dl, 0x75
je 0x402006
test edi, edi
mov eax, dword [esp + 8]
jns 0x402000
neg edi
mov dword [esp + 0x24], edi
or ecx, 0x80
jmp 0x40200e
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x401382
or edi, 0x20
add ecx, 2
jmp case.0x4012c1.74
lea eax, [ecx + 1]
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x4019ad
cmp edx, 0x36
jne 0x4019be
cmp byte [ecx + 2], 0x34
jne 0x4019b7
or edi, 0x20
add ecx, 3
jmp case.0x4012c1.74
or edi, 0x200
movzx edx, byte [ecx + 1]
cmp dl, 0x68
jne 0x401382
add ecx, 2
jmp case.0x4012c1.74
inc ecx
jmp 0x4012cc
mov eax, dword [esp + 0x28]
jmp 0x40162b
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x4013a0
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 0x28]
cmp ecx, 0xffffffff
je 0x4013ba
mov eax, ecx
mov dword [esp + 0x20], eax
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x60]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x44]
call fcn.004037e0
add esp, 0x18
test eax, eax
je 0x4013f7
or edi, 0x80
add dword [esp + 0x34], 8
mov edx, edi
jmp 0x401b72
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x41
je 0x401412
mov eax, str.0123456789abcdefxp
mov dword [esp + 0xc], eax
mov dword [esp + 0x44], edx
mov edx, 6
mov eax, dword [esp + 0x28]
cmp eax, 0xffffffff
je 0x40142a
mov edx, eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 4]
mov eax, ecx
or ecx, 0x80
mov ebx, ecx
mov dword [esp + 0x10], edx
test edx, edx
js 0x401449
mov ebx, eax
mov eax, dword [esp + 0x34]
mov edi, dword [eax]
mov edx, ebx
xor edx, 0xffffff7f
mov al, 0x2d
test edx, ecx
mov dword [esp + 0x1c], ebx
jne 0x401594
mov al, 0x20
test bl, 4
jne 0x401594
mov al, 0x2b
test bl, 2
jne 0x401594
xor ebx, ebx
jmp 0x40159a
mov dword [esp + 0xc], str.0123456789ABCDEFXP
mov eax, edx
cmp dl, 0x42
je 0x401499
mov dword [esp + 0xc], str.0123456789abcdefxp
mov byte [esp + 0x4c], 0
test cl, 8
mov edx, dword [esp + 8]
je 0x4014bc
cmp al, 0x42
setne al
mov word [esp + 0x4c], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x4e], al
mov dword [esp + 0x2c], 0x180
mov ebx, 0x180
jmp 0x4016a4
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x4014dd
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
fld qword [eax]
mov ecx, dword [esp + 0x28]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov edx, 6
cmp ecx, 0xffffffff
je 0x4014ff
mov edx, eax
lea eax, [edx - 1]
and eax, 0x80000000
mov dword [esp + 4], edx
lea ecx, [edx + 0x7fffffff]
or ecx, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x60]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x44]
call fcn.004037e0
add esp, 0x18
test eax, eax
je 0x401547
or edi, 0x80
mov dword [esp + 0x1c], edi
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 4]
cmp esi, edi
jb 0x401559
mov esi, edi
cmp esi, 2
jb 0x40161c
mov edx, dword [esp + 0x14]
mov ecx, edi
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edx + esi - 1], 0x30
jne 0x401b23
dec esi
lea eax, [ecx - 1]
cmp esi, 2
jb 0x401b25
cmp ecx, 1
mov ecx, eax
jne 0x401570
jmp 0x401b25
mov byte [esp + 0x4d], al
mov bl, 1
mov edx, dword [esp + 0x10]
mov eax, edx
and eax, 0xfffff
shr edx, 0x14
and edx, 0x7ff
je 0x4019e3
add edx, 0xfffffc01
mov ecx, 0xffffffff
add edi, ecx
mov ecx, 0xfffff
adc eax, ecx
add edi, 1
adc eax, 0
jmp 0x4019f4
mov ecx, dword [esp + 0x34]
lea eax, [ecx + 8]
mov dword [esp + 4], eax
mov eax, dword [ecx]
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 4]
cmp dl, 0x75
je 0x401b10
test eax, eax
jns 0x401b10
neg dword [esp + 0x24]
mov ecx, 0
sbb ecx, eax
or edi, 0x80
mov dword [esp + 0x10], ecx
mov ecx, edi
mov eax, dword [esp + 4]
mov dword [esp + 0x34], eax
jmp 0x40200a
mov eax, edi
jmp 0x401b25
and ecx, 0xffffffef
mov eax, 8
mov dword [esp + 0xc], str.0123456789ABCDEFXP
mov edi, edx
cmp dl, 0x58
mov edx, dword [esp + 8]
je 0x401646
mov dword [esp + 0xc], str.0123456789abcdefxp
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x440
mov byte [esp + 0x4c], 0
mov ebx, 0x440
test cl, 8
je 0x4016a4
mov eax, edi
cmp al, 0x58
setne al
mov word [esp + 0x4c], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x4e], al
jmp 0x4016a4
mov byte [esp + 0x4c], 0
test cl, 8
je 0x40168b
mov word [esp + 0x4c], 0x3001
mov dword [esp + 0x2c], 0x330
mov dword [esp + 0xc], str.0123456789ABCDEFXP
mov ebx, 0x330
mov edx, dword [esp + 8]
mov dword [esp + 8], edx
test cl, 0x20
jne 0x4016be
mov eax, dword [esp + 0x34]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x34], eax
xor edi, edi
jmp 0x4016ce
mov eax, dword [esp + 0x34]
mov edx, dword [eax]
mov edi, dword [eax + 4]
add eax, 8
mov dword [esp + 0x34], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], 0
mov byte [esp + 0x3c], 0
mov eax, edx
or eax, edi
jne 0x4016f5
mov byte [esp + 0x4c], 0
cmp dword [esp + 0x28], 0
je 0x4019c7
lea eax, [esp + 0x264]
nop
nop
nop
nop
mov dword [esp + 4], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, 0xffffffff
mov cl, bh
shl eax, cl
not eax
and eax, edx
mov ebx, dword [esp + 0x2c]
mov cl, bh
shrd edx, edi, cl
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + eax]
mov eax, dword [esp + 4]
mov byte [eax - 1], cl
mov cl, bh
shr edi, cl
test bh, 0x20
je 0x401742
mov edx, edi
xor edi, edi
lea ecx, [eax - 1]
mov dword [esp + 4], ecx
mov ecx, edx
or ecx, edi
jne 0x401789
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 4]
mov esi, ebx
lea ecx, [esp + 0x264]
xor esi, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x10]
not ecx
mov dword [esp + 0x24], edx
lea edx, [esp + 0x264]
and ecx, edx
mov edx, dword [esp + 0x24]
add ecx, ecx
sub ecx, esi
mov esi, dword [esp + 0x18]
cmp ecx, dword [esp + 0x28]
jge 0x4017ce
test byte [esp + 0x1c], 0x40
je 0x401710
inc ebx
mov dword [esp + 0x2c], ebx
mov ecx, ebx
shr ecx, 4
xor ecx, ebx
test cl, 0xf
jne 0x401710
and ebx, 0xfffffff0
mov dword [esp + 0x2c], ebx
movzx ecx, byte [0x450001]
mov ch, cl
add ch, cl
and ch, 0x70
sub cl, ch
add cl, 0xb8
mov byte [eax - 2], cl
add eax, 0xfffffffe
mov ebx, dword [esp + 0x2c]
jmp 0x401700
shl ebx, 0x14
and ebx, 0xf000000
add ebx, ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], 0
mov edi, dword [esp + 8]
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x28]
jmp 0x402943
mov eax, dword [esp + 0x34]
mov eax, dword [eax]
mov edx, str.null
test eax, eax
je 0x40180b
mov edx, eax
mov eax, dword [esp + 0x28]
mov ecx, eax
test eax, eax
jns 0x40181a
mov ecx, 0xffffffff
test dl, 3
mov dword [esp + 4], edx
je 0x4026d3
mov esi, eax
mov eax, edx
add edx, ecx
test esi, esi
je 0x402829
cmp byte [eax], 0
je 0x402827
inc eax
lea esi, [ecx - 1]
mov dword [esp + 0xc], eax
test al, 3
je 0x403660
test esi, esi
je 0x402829
mov eax, dword [esp + 0xc]
cmp byte [eax], 0
je 0x402827
mov eax, dword [esp + 4]
add eax, 2
lea esi, [ecx - 2]
mov dword [esp + 0xc], eax
test al, 3
je 0x403660
test esi, esi
je 0x402829
mov eax, dword [esp + 0xc]
cmp byte [eax], 0
je 0x402827
mov eax, dword [esp + 4]
add eax, 3
lea esi, [ecx - 3]
mov dword [esp + 0xc], eax
test al, 3
je 0x403660
test esi, esi
je 0x402829
mov eax, dword [esp + 0xc]
cmp byte [eax], 0
je 0x402827
mov eax, dword [esp + 4]
lea ebx, [eax + 4]
add ecx, 0xfffffffc
test bl, 3
je 0x403666
test ecx, ecx
je 0x402829
mov edx, ebx
jmp 0x402829
mov byte [esp + 0x263], dl
mov dword [esp + 0x2c], 1
mov byte [esp + 0x4c], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x263]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
xor eax, eax
xor edi, edi
jmp 0x402943
mov edx, ecx
mov ecx, dword [esp + 0x34]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x34], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x2c], 1
mov byte [esp + 0x4c], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x263]
mov dword [esp + 0x1c], edx
jmp 0x401bc6
mov eax, dword [esp + 0x34]
fld qword [eax]
add eax, 8
mov dword [esp + 0x34], eax
test ecx, 0x100
jne 0x4021f6
jmp 0x4022ab
mov edx, dword [esp + 0x34]
mov eax, dword [edx]
mov edi, dword [esp + 0x30]
mov ecx, edi
sub ecx, ebx
add ecx, esi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x54]
jmp 0x403641
cmp byte [ecx + 2], 0x32
je 0x401dcc
mov ecx, eax
jmp case.0x4012c1.74
mov dword [esp + 0x54], eax
jmp 0x4012d0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x264]
jmp 0x401bc6
xor edx, edx
mov ecx, edi
or ecx, eax
je 0x4019f0
mov edx, 0xfffffc02
mov dword [esp + 0x48], edx
shld eax, edi, 8
shl edi, 8
mov ecx, dword [esp + 0x24]
cmp ecx, 0xe
mov dword [esp + 0x10], edx
jg 0x401a3e
lea ecx, [ecx*4]
xor esi, esi
mov edx, 0x8000000
shrd esi, edx, cl
shr edx, cl
test cl, 0x20
je 0x401a24
mov esi, edx
xor edx, edx
mov ecx, edi
and ecx, esi
xor edi, esi
mov esi, eax
and esi, edx
xor eax, edx
shld esi, ecx, 1
add ecx, ecx
add edi, ecx
adc eax, esi
mov esi, dword [esp + 0x18]
movzx ecx, bl
lea edx, [esp + 0x4c]
mov word [ecx + edx + 1], 0x7830
or bl, 2
mov byte [esp + 0x4c], bl
mov ecx, eax
shr ecx, 0x1c
mov edx, dword [esp + 0xc]
movzx ecx, byte [edx + ecx]
mov byte [esp + 0xa4], cl
mov edx, dword [esp + 0x24]
test edx, edx
je 0x401af4
movzx ecx, byte [section..data]
xor cl, 0x98
mov byte [esp + 0xa5], cl
lea ecx, [esp + 0xa6]
mov dword [esp + 0x14], ecx
mov ecx, edx
cmp edx, 0xd
jb 0x401a9b
mov ecx, 0xd
sub edx, ecx
jg 0x401aa1
xor edx, edx
mov dword [esp + 0x20], edx
mov esi, ecx
and esi, 3
je 0x401dd4
mov dword [esp + 4], ecx
xor edx, edx
mov ecx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
mov ebx, eax
shr ebx, 0x18
and ebx, 0xf
movzx ebx, byte [ecx + ebx]
shld eax, edi, 4
mov byte [esp + edx + 0xa6], bl
shl edi, 4
inc edx
cmp esi, edx
jne 0x401ac0
lea esi, [esp + 0xa6]
lea ebx, [esi + edx]
mov ecx, dword [esp + 4]
sub ecx, edx
jmp 0x401ddb
lea ebx, [esp + 0xa5]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], 0
mov dword [esp + 0xc], ebx
jmp 0x401e55
mov dword [esp + 0x10], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x34], eax
mov ecx, edi
jmp 0x40200a
mov eax, ecx
add dword [esp + 0x34], 8
mov dword [esp + 0x2c], esi
mov ecx, dword [esp + 0x48]
cmp ecx, 0xfffffffd
jl 0x401b52
cmp ecx, edi
jg 0x401b52
test ecx, ecx
jle 0x401fe7
sub esi, ecx
jg 0x401b49
xor esi, esi
mov dword [esp + 0x20], esi
jmp 0x401ff3
cmp eax, esi
jle 0x401b5d
dec esi
mov dword [esp + 0x20], esi
jmp 0x401b6a
xor ecx, ecx
sub eax, 1
jb 0x401b66
mov ecx, eax
mov dword [esp + 0x20], ecx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov byte [esp + 0x3c], 0
mov byte [esp + 0x4c], 0
mov ecx, edx
or ecx, 0x80
mov dword [esp + 0x1c], edx
xor edx, 0xffffff7f
mov al, 0x2d
test ecx, edx
jne 0x401ba6
mov al, 0x20
test byte [esp + 0x1c], 4
jne 0x401ba6
mov al, 0x2b
test byte [esp + 0x1c], 2
je 0x401baf
mov byte [esp + 0x4c], 1
mov byte [esp + 0x4d], al
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x14]
cmp eax, 0x7000
jne 0x401bd9
mov dword [esp + 0x20], 0
xor eax, eax
mov edi, dword [esp + 8]
jmp 0x402943
mov dword [esp + 0x28], eax
mov dword [esp + 4], ecx
movzx ecx, byte [ecx]
mov byte [esp + 0xa4], cl
lea ecx, [esp + 0xa5]
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x20]
test edx, edx
je 0x401c1a
movzx ecx, byte [section..data]
xor cl, 0x98
mov byte [esp + 0xa5], cl
lea ecx, [esp + 0xa6]
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x2c]
lea ecx, [eax - 1]
cmp ecx, edx
jbe 0x401c34
mov ecx, edx
and ecx, 1
xor edx, 1
lea eax, [edx + ecx*2]
mov dword [esp + 0x2c], eax
cmp eax, 2
mov dword [esp + 0x10], eax
jb 0x401ce2
lea edi, [eax - 1]
lea esi, [eax - 2]
mov edx, 1
cmp esi, 7
jb 0x401cb5
mov esi, edi
and esi, 0xfffffff8
xor edx, edx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
movzx ebx, byte [eax + edx + 1]
mov byte [ecx + edx], bl
movzx ebx, byte [eax + edx + 2]
mov byte [ecx + edx + 1], bl
movzx ebx, byte [eax + edx + 3]
mov byte [ecx + edx + 2], bl
movzx ebx, byte [eax + edx + 4]
mov byte [ecx + edx + 3], bl
movzx ebx, byte [eax + edx + 5]
mov byte [ecx + edx + 4], bl
movzx ebx, byte [eax + edx + 6]
mov byte [ecx + edx + 5], bl
movzx ebx, byte [eax + edx + 7]
mov byte [ecx + edx + 6], bl
movzx ebx, byte [eax + edx + 8]
mov byte [ecx + edx + 7], bl
add edx, 8
cmp esi, edx
jne 0x401c60
add ecx, edx
mov dword [esp + 0xc], ecx
inc edx
mov eax, dword [esp + 0x24]
and edi, 7
je 0x401ce6
mov eax, dword [esp + 4]
add eax, edx
xor edx, edx
mov ecx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
inc edx
cmp edi, edx
jne 0x401cd0
add ecx, edx
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x24]
movzx ecx, byte [eax + 0xe]
mov byte [esp + 0x3d], cl
mov eax, dword [esp + 0x28]
mov esi, eax
dec esi
js 0x401cfe
mov byte [esp + 0x3e], 0x2b
jmp 0x401d0a
mov byte [esp + 0x3e], 0x2d
mov esi, 1
sub esi, eax
xor eax, eax
cmp esi, 0x64
setge al
mov edi, eax
mov eax, esi
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
lea eax, [ecx + ecx]
lea eax, [eax + eax*4]
mov ebx, esi
sub ebx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
lea eax, [edi + 4]
add bl, 0x30
add edx, edx
lea edx, [edx + edx*4]
mov dword [esp + 4], edx
mov dword [esp + 0x24], eax
mov byte [esp + 0x3c], al
mov byte [esp + edi + 0x40], bl
mov edx, ecx
sub edx, dword [esp + 4]
add dl, 0x30
mov byte [esp + edi + 0x3f], dl
cmp esi, 0x64
jl 0x401da2
mov eax, esi
mov ecx, 0x51eb851f
mul ecx
mov ecx, edx
shr ecx, 5
mov eax, ecx
mov edx, 0x1999999a
mul edx
add edx, edx
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
or dl, 0x30
lea eax, [esp + 0x3c]
mov esi, dword [esp + 0x24]
mov byte [esi + eax - 2], dl
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x10], 0x3000001
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
jmp 0x402932
add ecx, 3
jmp case.0x4012c1.74
lea ebx, [esp + 0xa6]
cmp dword [esp + 0x24], 4
jb 0x401e46
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], ecx
mov edx, eax
shr edx, 0x18
and edx, 0xf
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx + edx]
mov byte [ebx], dl
mov edx, eax
shr edx, 0x14
and edx, 0xf
movzx edx, byte [ecx + edx]
mov byte [ebx + 1], dl
mov edx, eax
shr edx, 0x10
and edx, 0xf
movzx edx, byte [ecx + edx]
mov byte [ebx + 2], dl
shld esi, edi, 0x10
shl edi, 0x10
shr eax, 0xc
and eax, 0xf
movzx eax, byte [ecx + eax]
mov ecx, dword [esp + 4]
mov byte [ebx + 3], al
add ebx, 4
mov eax, esi
add ecx, 0xfffffffc
jne 0x401df0
lea edi, [esp + 0xa6]
mov dword [esp + 0xc], edi
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
cmp cl, 0x41
setne cl
shl cl, 5
or cl, 0x50
mov byte [esp + 0x3d], cl
test eax, eax
js 0x401e94
mov byte [esp + 0x3e], 0x2b
cmp eax, 0x3e7
ja 0x401ea2
cmp eax, 0x63
jbe 0x401fc7
mov dword [esp + 0x28], ebx
mov dword [esp + 4], 5
jmp 0x401eae
mov byte [esp + 0x3e], 0x2d
neg eax
cmp eax, 0x3e7
jbe 0x401e7d
mov dword [esp + 0x28], ebx
mov dword [esp + 4], 6
mov dword [esp + 0x24], 0
mov ecx, 0xcccccccd
mov dword [esp + 0x10], eax
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea esi, [edx + edx*4]
mov eax, dword [esp + 0x10]
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 ebx, dword [esp + 0x10]
sub ebx, esi
mov esi, dword [esp + 4]
mov eax, esi
mov byte [esp + 0x3c], al
or bl, 0x30
mov byte [esp + esi + 0x3c], bl
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea edx, [edx + edx*4]
mov eax, dword [esp + 0x10]
sub ecx, edx
add cl, 0x30
mov byte [esp + esi + 0x3b], cl
cmp byte [esp + 0x24], 0
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x28]
jne 0x4027f1
mov ecx, 0x51eb851f
mov dword [esp + 8], edi
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]
mov edi, dword [esp + 8]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x3c]
mov edx, dword [esp + 4]
mov byte [edx + eax - 2], cl
mov eax, dword [esp + 0x10]
cmp eax, 0x3e8
jb 0x4027f1
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]
mov edi, dword [esp + 8]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x3c]
mov edx, dword [esp + 4]
mov byte [edx + eax - 3], cl
jmp 0x4027f1
cmp eax, 9
jbe 0x4027e2
mov dword [esp + 0x28], ebx
mov dword [esp + 4], 4
mov cl, 1
mov dword [esp + 0x24], ecx
jmp 0x401eb6
cmp eax, esi
jl 0x401fed
mov eax, esi
sub eax, ecx
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
jmp 0x4022f7
mov dword [esp + 0x24], edi
jmp 0x40200e
mov dword [esp + 0x24], edi
mov eax, dword [esp + 8]
test ecx, 0x100
mov dword [esp + 0x1c], ecx
jne 0x4021b3
mov dword [esp + 8], eax
movzx edx, byte [0x450001]
mov eax, edx
xor al, 0xb8
mov byte [esp + 0x44], al
mov eax, edx
add al, dl
and al, 0x70
sub dl, al
add dl, 0xb8
mov byte [esp + 0xc], dl
mov edi, 0x200
xor edx, edx
mov ebx, dword [esp + 0x24]
nop
nop
nop
nop
nop
mov dword [esp + 0x20], edx
cmp ebx, 0x5f5e100
mov edx, dword [esp + 0x10]
mov eax, edx
sbb eax, 0
jb 0x402090
push 0
push 0x5f5e100
push edx
push ebx
call fcn.0040c3a0
mov dword [esp + 0x10], edx
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
jmp 0x4020a0
mov dword [esp + 0x10], 0
mov dword [esp + 0x24], 0
lea eax, [esp + 0x5c]
add eax, edi
mov dword [esp + 4], eax
test cl, 0x40
jne 0x402100
mov ecx, 0x51eb851f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
mul ecx
shr edx, 5
imul eax, edx, 0x64
mov esi, ebx
sub esi, eax
movzx eax, word [esi + esi + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + edi + 0x62], ax
add edi, 0xfffffffe
cmp ebx, 0x64
mov ebx, edx
jae 0x4020c0
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
jmp 0x402160
test ebx, ebx
mov edx, dword [esp + 0x20]
jne 0x40213b
jmp 0x402160
inc edx
mov ecx, edx
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 + 0x63], bl
dec edi
mov ebx, edx
mov edx, ecx
mov ecx, dword [esp + 0x1c]
test ebx, ebx
je 0x402160
test cl, 0x40
je 0x402111
cmp edx, 3
jne 0x402110
movzx eax, byte [esp + 0x44]
mov byte [esp + edi + 0x63], al
dec edi
dec dword [esp + 4]
xor edx, edx
test ebx, ebx
jne 0x40213b
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x24]
mov eax, ebx
or eax, dword [esp + 0x10]
jne 0x402187
jmp 0x402410
inc edx
mov byte [esp + edi + 0x63], 0x30
dec edi
lea eax, [esp + edi]
add eax, 0x64
cmp eax, dword [esp + 4]
je 0x402050
test cl, 0x40
je 0x402181
cmp edx, 3
jne 0x402180
movzx eax, byte [esp + 0xc]
mov byte [esp + edi + 0x63], al
dec edi
dec dword [esp + 4]
xor edx, edx
jmp 0x402187
mov eax, 1
mov ecx, dword [esp + 0x28]
cmp ecx, 0xffffffff
mov edx, dword [esp + 0x10]
je 0x4021c7
mov eax, ecx
mov dword [esp + 0x28], 0
cmp dword [esp + 0x24], 0x400
mov ecx, edx
sbb ecx, 0
jb 0x4021e2
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
fild qword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
xor eax, eax
test ecx, 0x800
sete al
fld qword [eax*8 + 0x44d550]
cmp ecx, 0x3ffffff
ja 0x4022a9
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x40222c
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4022a7
fdiv st(2), st(0)
mov eax, ecx
add ecx, 0x1000000
cmp eax, 0x2ffffff
ja 0x4022a7
mov edx, eax
fucom st(2)
fnstsw ax
sahf
jbe 0x402251
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4022a7
fdiv st(2), st(0)
mov eax, edx
lea ecx, [edx + 0x2000000]
cmp edx, 0x1ffffff
ja 0x4022a7
fucom st(2)
fnstsw ax
sahf
jbe 0x402275
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4022a7
fdiv st(2), st(0)
mov eax, edx
lea ecx, [edx + 0x3000000]
cmp edx, 0xffffff
ja 0x4022a7
fucom st(2)
fnstsw ax
sahf
jbe 0x40377b
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x40377b
fstp st(0)
fstp st(0)
mov edi, ecx
mov ecx, 6
mov eax, dword [esp + 0x28]
cmp eax, 0xffffffff
je 0x4022bd
mov ecx, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x60]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x44]
call fcn.004037e0
add esp, 0x18
mov edx, edi
test eax, eax
je 0x4022f7
or edx, 0x80
mov byte [esp + 0x3c], 0
mov byte [esp + 0x4c], 0
mov ecx, edx
or ecx, 0x80
mov dword [esp + 0x1c], edx
xor edx, 0xffffff7f
mov al, 0x2d
test ecx, edx
jne 0x40232b
mov al, 0x20
test byte [esp + 0x1c], 4
jne 0x40232b
mov al, 0x2b
test byte [esp + 0x1c], 2
je 0x402334
mov byte [esp + 0x4c], 1
mov byte [esp + 0x4d], al
mov ecx, dword [esp + 0x48]
cmp ecx, 0x7000
mov edi, dword [esp + 8]
jne 0x40235d
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], 0
jmp 0x402941
test ecx, ecx
mov dword [esp + 8], edi
jle 0x4024b5
mov dword [esp + 4], 0
test byte [esp + 0x1c], 0x40
mov esi, dword [esp + 0x20]
je 0x40239f
mov dword [esp + 0x20], esi
mov esi, 0x258
sub esi, ecx
mov eax, esi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
sub esi, eax
mov dword [esp + 4], esi
mov esi, dword [esp + 0x20]
cmp ecx, dword [esp + 0x2c]
jae 0x402543
xor eax, eax
lea ecx, [esp + 0xa4]
mov dword [esp + 0x10], ecx
jmp 0x4023de
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + eax]
lea edi, [edx + 1]
mov dword [esp + 0x10], edi
mov byte [edx], cl
inc eax
mov ecx, dword [esp + 0x48]
cmp eax, ecx
jae 0x40259e
test byte [esp + 0x1c], 0x40
je 0x4023bc
mov ecx, dword [esp + 4]
inc ecx
cmp ecx, 4
jne 0x4023b8
mov ecx, dword [esp + 0x1c]
and ecx, 0x40
shr ecx, 6
mov dword [esp + 4], ecx
movzx ecx, byte [0x450001]
xor cl, 0xb8
mov edx, dword [esp + 0x10]
mov byte [edx], cl
inc edx
jmp 0x4023c0
cmp byte [esp + edi + 0x64], 0x30
mov eax, ecx
sete ch
cmp edi, 0x200
setne cl
mov byte [esp + 0x3c], 0
mov byte [esp + 0x4c], 0
mov ebx, eax
or ebx, 0x80
xor eax, 0xffffff7f
mov dl, 0x2d
test ebx, eax
jne 0x402452
mov dl, 0x20
test byte [esp + 0x1c], 4
jne 0x402452
mov dl, 0x2b
test byte [esp + 0x1c], 2
je 0x40245b
mov byte [esp + 0x4c], 1
mov byte [esp + 0x4d], dl
and cl, ch
movzx eax, cl
add edi, eax
lea ecx, [esp + edi]
add ecx, 0x64
lea edx, [edi - 0x200]
neg edx
mov dword [esp + 0x2c], edx
cmp edi, 0x200
jne 0x40248e
mov byte [ecx - 1], 0x30
dec ecx
mov dword [esp + 0x2c], 1
mov edx, 1
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], 0
test eax, eax
jg 0x4024a4
xor eax, eax
add edx, 0x3000000
mov dword [esp + 0x10], edx
mov edx, eax
jmp 0x402943
mov byte [esp + 0xa4], 0x30
lea edx, [esp + 0xa5]
mov esi, dword [esp + 0x20]
test esi, esi
je 0x4024ec
movzx eax, byte [section..data]
mov edx, eax
add dl, al
and dl, 0x30
sub al, dl
add al, 0x98
mov byte [esp + 0xa5], al
lea edx, [esp + 0xa6]
neg ecx
mov ebx, esi
cmp esi, ecx
jl 0x4024f6
mov ebx, ecx
test ebx, ebx
mov dword [esp + 4], ebx
je 0x4026da
mov eax, edx
and eax, 3
je 0x4026da
mov esi, edx
not esi
and esi, 3
lea edi, [ebx - 1]
cmp esi, edi
jb 0x40251d
mov esi, edi
lea eax, [esi + 1]
push eax
push 0x30
push edx
mov ebx, edx
call fcn.0040c490
mov edx, ebx
add esp, 0xc
lea edx, [esi + ebx]
inc edx
sub edi, esi
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 4]
jmp 0x4026dc
xor ebx, ebx
mov edi, 0xffffffff
lea edx, [esp + 0xa4]
mov ecx, dword [esp + 4]
jmp 0x402579
mov esi, edx
mov eax, dword [esp + 0x14]
movzx eax, byte [eax + ebx]
inc edx
mov byte [esi], al
inc ebx
dec edi
cmp ebx, dword [esp + 0x2c]
jae 0x40263c
test byte [esp + 0x1c], 0x40
je 0x402560
inc ecx
cmp ecx, 4
jne 0x402560
mov ecx, dword [esp + 0x1c]
and ecx, 0x40
shr ecx, 6
movzx eax, byte [0x450001]
xor al, 0xb8
mov byte [edx], al
inc edx
jmp 0x402560
mov edi, dword [esp + 0x10]
mov dword [esp + 0xc], edi
test esi, esi
je 0x4025c2
movzx ecx, byte [section..data]
xor cl, 0x98
mov byte [edx + 1], cl
add edx, 2
mov ecx, dword [esp + 0x48]
mov dword [esp + 0xc], edx
mov edi, dword [esp + 0x2c]
mov esi, edi
sub esi, ecx
mov edx, dword [esp + 0x20]
cmp esi, edx
jbe 0x4025d9
lea edi, [ecx + edx]
mov dword [esp + 0x2c], edi
cmp eax, edi
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
jae 0x40260c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + eax]
mov byte [edx], cl
inc edx
inc eax
mov edi, dword [esp + 0x2c]
cmp eax, edi
jb 0x4025f0
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x48]
lea eax, [esp + 0xa4]
mov edx, dword [esp + 0x10]
sub edx, eax
add edx, 0x3000000
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x20]
sub eax, edi
add eax, ecx
mov dword [esp + 0x20], eax
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
jmp 0x4028ae
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x48]
mov eax, esi
sub eax, ebx
jbe 0x4027ad
test byte [esp + 0x1c], 0x40
jne 0x40364b
cmp esi, ebx
mov dword [esp + 4], ecx
je 0x40370a
mov dword [esp + 0x10], eax
mov eax, edx
and eax, 3
je 0x403706
mov ecx, 2
sub ecx, dword [esp + 0xc]
and ecx, 3
not ebx
lea eax, [ebx + esi]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], ecx
cmp ecx, eax
mov ecx, dword [esp + 0x10]
jb 0x402697
mov ecx, eax
mov dword [esp + 0x10], ecx
lea eax, [ecx + 1]
push eax
push 0x30
push edx
call fcn.0040c490
add esp, 0xc
add edi, esi
mov eax, dword [esp + 0x24]
cmp edi, eax
jb 0x4026b6
mov edi, eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
lea edx, [eax + ecx]
add edx, 2
sub esi, edi
add ebx, esi
mov eax, ebx
mov ecx, dword [esp + 4]
jmp 0x40370a
mov ebx, edx
jmp 0x403666
mov edi, ebx
cmp edi, 4
jl 0x40271e
mov eax, edi
cmp edi, 7
jl 0x4026ed
mov eax, 7
neg eax
lea esi, [edi + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
push edx
mov ebx, edx
call fcn.0040c490
mov edx, ebx
add esp, 0xc
lea edx, [esi + ebx]
add edx, 4
sub edi, esi
add edi, 0xfffffffc
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 4]
test edi, edi
je 0x402738
push edi
push 0x30
push edx
mov ebx, edx
call fcn.0040c490
mov edx, ebx
mov ebx, dword [esp + 0x10]
add esp, 0xc
add edx, edi
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x2c]
lea ecx, [eax + ebx]
cmp ecx, esi
jle 0x402759
mov eax, ebx
not eax
and eax, esi
mov ecx, esi
not ecx
and ecx, ebx
sub eax, ecx
mov dword [esp + 0x2c], eax
test eax, eax
mov dword [esp + 0xc], eax
je 0x402896
mov ecx, eax
and ecx, 3
je 0x402840
mov eax, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x14]
lea edi, [esi + 1]
mov dword [esp + 0x14], edi
movzx ebx, byte [esi]
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x402780
add eax, edx
mov esi, dword [esp + 0xc]
mov ecx, esi
sub ecx, edx
mov edi, dword [esp + 8]
mov edx, eax
mov eax, esi
jmp 0x402842
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 8]
mov ecx, edx
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x10], ecx
cmp dword [esp + 0x20], 0
je 0x40281a
movzx eax, byte [section..data]
xor al, 0x98
mov byte [edx], al
inc edx
jmp 0x4028ae
mov byte [esp + 0x3c], 3
or al, 0x30
mov byte [esp + 0x3f], al
mov edi, dword [esp + 8]
add dword [esp + 0x34], 8
mov eax, ebx
sub eax, dword [esp + 0xc]
mov dword [esp + 0x48], eax
lea eax, [esp + 0xa4]
sub ebx, eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x10], 0x3000001
jmp 0x40293f
mov dword [esp + 0x20], 0
jmp 0x4028ae
mov edx, eax
mov eax, edx
not eax
mov ecx, dword [esp + 4]
and eax, ecx
mov esi, ecx
not esi
and esi, edx
sub esi, eax
jmp 0x4036c8
mov ecx, eax
cmp eax, 4
jb 0x402896
mov eax, edx
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax], dl
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax + 2], dl
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax + 3], dl
mov edx, eax
add edx, 4
add ecx, 0xfffffffc
jne 0x402847
mov eax, dword [esp + 4]
add eax, dword [esp + 0xc]
sub dword [esp + 0x20], eax
mov dword [esp + 0x10], 0x3000001
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
test eax, 0x100
je 0x402932
mov ecx, eax
and ecx, 0x400
sete byte [esp + 0x3c]
mov byte [esp + 0x3d], 0x20
cmp eax, 0x1000000
jb 0x402932
mov dword [esp + 0xc], edx
mov edi, eax
shr edi, 0x18
mov ebx, ecx
shr ebx, 0xa
mov edx, 2
sub edx, ebx
cmp ecx, 1
mov ebx, 0
adc bl, 1
test eax, 0x800
jne 0x402906
movzx ecx, byte [edi + str._kMGT]
mov byte [esp + edx + 0x3c], cl
jmp 0x402926
movzx ecx, byte [edi + str._KMGT]
mov byte [esp + edx + 0x3c], cl
and eax, 0x1800
cmp eax, 0x800
jne 0x402926
movzx ebx, bl
mov byte [esp + ebx + 0x3d], 0x69
inc ebx
mov edi, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov byte [esp + 0x3c], bl
lea eax, [esp + 0xa4]
sub edx, eax
mov dword [esp + 0x2c], edx
mov ecx, eax
xor eax, eax
mov dword [esp + 8], edi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jg 0x402955
mov eax, ecx
mov dword [esp + 0x44], ecx
mov ebx, eax
movsx eax, byte [esp + 0x4c]
movsx edx, byte [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov edi, ebx
add ecx, ebx
add ecx, eax
add ecx, edx
mov edx, dword [esp + 8]
cmp edx, ecx
jg 0x40297b
mov edx, ecx
sub edx, ecx
mov dword [esp + 8], edx
mov edx, edi
mov ecx, edi
not ecx
mov edi, dword [esp + 0x44]
and ecx, edi
not edi
and edi, edx
sub edi, ecx
mov dword [esp + 0x44], edi
mov edx, dword [esp + 0x1c]
test dl, 1
jne 0x4029ca
mov ecx, edx
xor ecx, 0xffffffef
or edx, 0x10
test edx, ecx
mov ebx, dword [esp + 0x38]
je 0x4029d4
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x44]
cmp ecx, edi
mov edx, dword [esp + 4]
jg 0x4029c2
mov ecx, edi
mov dword [esp + 0x44], ecx
xor edi, edi
jmp 0x4029e4
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x38]
jmp 0x4029e0
mov dword [esp + 0x1c], 0
mov edx, dword [esp + 4]
mov edi, dword [esp + 8]
mov ecx, edi
add ecx, dword [esp + 0x44]
je 0x402f1a
test byte [esp + 0x1c], 1
jne 0x402b2e
test edi, edi
jg 0x402a1e
jmp 0x402b2e
mov ebx, dword [esp + 0x38]
sub edi, edx
test edi, edi
jle 0x402b29
mov eax, ebx
sub eax, esi
add eax, 0x200
mov edx, edi
cmp edi, eax
jl 0x402a2f
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x402a37
mov edx, edi
test edx, edx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x18], edx
mov dword [esp + 8], edi
je 0x402aa0
mov eax, esi
and eax, 3
je 0x402aa0
mov ebx, esi
not esi
and esi, 3
lea edi, [edx - 1]
cmp esi, edi
jb 0x402a5e
mov esi, edi
lea eax, [esi + 1]
push eax
push 0x20
push ebx
call fcn.0040c490
add esp, 0xc
add ebx, esi
inc ebx
sub edi, esi
mov edx, dword [esp + 0x18]
cmp edi, 4
jge 0x402aa9
test edi, edi
je 0x402ae1
push edi
push 0x20
mov esi, ebx
push ebx
call fcn.0040c490
mov edx, dword [esp + 0x24]
add esp, 0xc
add esi, edi
jmp 0x402ae3
mov ebx, esi
mov edi, edx
cmp edi, 4
jl 0x402a7b
mov eax, edi
cmp edi, 7
jl 0x402ab5
mov eax, 7
neg eax
lea esi, [edi + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
push ebx
call fcn.0040c490
add esp, 0xc
add ebx, esi
add ebx, 4
sub edi, esi
add edi, 0xfffffffc
mov edx, dword [esp + 0x18]
test edi, edi
jne 0x402a7f
mov esi, ebx
mov edi, dword [esp + 8]
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x402a10
mov eax, esi
mov ebx, dword [esp + 0x38]
sub eax, ebx
cmp eax, 0x1ff
jl 0x402a14
add dword [esp + 0x30], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov ebx, eax
mov edx, dword [esp + 0x18]
jmp 0x402a14
movzx eax, byte [esp + 0x4c]
lea ecx, [esp + 0x4d]
mov dword [esp + 0x14], ecx
test al, al
mov dword [esp + 8], edi
jne 0x402b9d
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
mov edx, eax
shr edx, 0x18
mov dword [esp + 0x28], edx
xor edx, edx
test byte [esp + 0x1c], 0x40
je 0x402b74
and eax, 0xffffff
add eax, ecx
mov ecx, dword [esp + 0x28]
inc ecx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
sub eax, edx
mov edx, eax
test ecx, ecx
jle 0x403083
mov dword [esp + 0xc], edx
mov edx, dword [esp + 4]
jmp 0x402cd0
movzx eax, byte [esp + 0x4c]
test al, al
mov ecx, dword [esp + 0x44]
je 0x402b42
movsx edx, al
mov ecx, ebx
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402bb0
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402bb8
mov ecx, edx
movzx eax, al
sub eax, ecx
mov byte [esp + 0x4c], al
test ecx, ecx
je 0x402c5b
mov eax, ecx
and eax, 3
je 0x402cb0
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ebx
xor edx, edx
nop
nop
mov ecx, esi
mov esi, dword [esp + 0x14]
lea edi, [esi + 1]
mov dword [esp + 0x14], edi
movzx ebx, byte [esi]
mov esi, ecx
mov byte [ecx + edx], bl
inc edx
cmp eax, edx
jne 0x402be0
add esi, edx
mov ecx, dword [esp + 0x18]
mov eax, ecx
sub eax, edx
mov ebx, dword [esp + 0x38]
cmp ecx, 4
jb 0x402c5b
nop
nop
nop
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402c10
cmp dword [ebp + 8], 0
je 0x402b90
mov ecx, esi
xor ecx, ebx
mov eax, ebx
not eax
and eax, esi
add eax, eax
sub eax, ecx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402b90
add dword [esp + 0x30], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov ebx, eax
jmp 0x402b90
mov eax, ecx
cmp ecx, 4
jae 0x402c10
jmp 0x402c5b
mov ecx, dword [esp + 0x44]
sub ecx, dword [esp + 0x24]
test ecx, ecx
jle 0x402f11
mov edi, ebx
mov eax, ebx
sub eax, esi
add eax, 0x200
mov ebx, ecx
cmp ecx, eax
jl 0x402ce3
mov ebx, eax
cmp dword [ebp + 8], 0
jne 0x402ceb
mov ebx, ecx
test byte [esp + 0x1c], 0x40
mov dword [esp + 0x44], ecx
mov dword [esp + 0x24], ebx
jne 0x402d50
test ebx, ebx
je 0x402e30
mov dword [esp + 0x38], edi
mov eax, esi
lea ecx, [ebx + 3]
xor edi, edi
nop
nop
nop
mov dword [esp + 0x10], ecx
mov esi, eax
add eax, edi
mov ecx, eax
xor ecx, 0xfffffffc
mov edx, eax
or edx, 3
test edx, ecx
je 0x402dc0
mov eax, esi
mov byte [esi + edi], 0x30
dec ebx
inc edi
mov ecx, dword [esp + 0x10]
dec ecx
cmp dword [esp + 0x24], edi
jne 0x402d10
add eax, edi
mov esi, eax
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 4]
jmp 0x402e32
mov ecx, ebx
test ecx, ecx
je 0x402e30
test cl, 1
jne 0x402d80
mov eax, ecx
mov ebx, edi
cmp ecx, 1
jne 0x402ebe
jmp 0x402e32
mov al, 0x30
test byte [esp + 0x1c], 0x40
mov ebx, edi
je 0x402e81
mov edi, dword [esp + 0xc]
cmp edi, dword [esp + 0x28]
jne 0x402e7d
movzx eax, byte [0x450001]
mov edx, eax
add dl, al
and dl, 0x70
sub al, dl
mov edx, dword [esp + 4]
add al, 0xb8
mov dword [esp + 0xc], 0
jmp 0x402e81
mov dword [esp + 0x18], esi
mov ecx, dword [esp + 0x24]
sub ecx, edi
cmp ecx, 4
jl 0x402e1d
cmp ebx, 7
jl 0x402dd9
mov ebx, 7
mov edx, dword [esp + 0x24]
mov ecx, edx
mov esi, edx
sub ecx, ebx
sub ecx, edi
add ecx, 3
and ecx, 0xfffffffc
add ecx, 4
push ecx
push 0x30
push eax
call fcn.0040c490
add esp, 0xc
mov edx, dword [esp + 0x10]
sub edx, ebx
and edx, 0xfffffffc
mov eax, dword [esp + 0x18]
add eax, edx
add eax, edi
add eax, 4
mov ebx, esi
mov ecx, esi
sub ecx, edx
mov esi, eax
sub ecx, edi
add ecx, 0xfffffffc
jmp 0x402e1f
mov esi, eax
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 4]
test ecx, ecx
jne 0x402d5a
nop
mov ebx, edi
cmp dword [ebp + 8], 0
je 0x402cc0
mov ecx, esi
not ecx
and ecx, ebx
mov eax, ebx
not eax
and eax, esi
sub eax, ecx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402cc0
add dword [esp + 0x30], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov ebx, eax
mov edx, dword [esp + 4]
jmp 0x402cc0
inc dword [esp + 0xc]
mov byte [esi], al
inc esi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x402ebe
jmp 0x402e32
movzx ecx, byte [0x450001]
mov edx, ecx
add dl, cl
and dl, 0x70
sub cl, dl
add cl, 0xb8
mov dword [esp + 0xc], 0
mov edx, dword [esp + 4]
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402e32
mov cl, 0x30
test byte [esp + 0x1c], 0x40
je 0x402ef5
mov edx, dword [esp + 0xc]
cmp edx, dword [esp + 0x28]
jne 0x402ef0
movzx edx, byte [0x450001]
mov ch, dl
add ch, dl
and ch, 0x70
sub dl, ch
add dl, 0xb8
mov dword [esp + 0xc], 0
jmp 0x402ef7
inc edx
mov dword [esp + 0xc], edx
mov dl, 0x30
mov byte [esi], dl
test byte [esp + 0x1c], 0x40
je 0x402eab
mov edx, dword [esp + 0xc]
cmp edx, dword [esp + 0x28]
je 0x402e90
inc edx
mov dword [esp + 0xc], edx
jmp 0x402eab
movzx eax, byte [esp + 0x4c]
mov edi, dword [esp + 8]
mov dword [esp + 8], edi
lea ecx, [esp + 0x4d]
mov dword [esp + 0x14], ecx
test al, al
je 0x40308f
mov edi, dword [esp + 0x30]
jmp 0x402f55
mov esi, eax
mov ebx, eax
mov edx, dword [esp + 4]
movzx eax, byte [esp + 0x4c]
test al, al
je 0x40307d
movsx edx, al
mov ecx, ebx
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402f68
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402f70
mov ecx, edx
sub al, cl
mov byte [esp + 0x4c], al
test ecx, ecx
je 0x40302b
mov eax, ecx
and eax, 3
je 0x403070
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x30], edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, esi
mov esi, dword [esp + 0x14]
lea edi, [esi + 1]
mov dword [esp + 0x14], edi
movzx ebx, byte [esi]
mov esi, ecx
mov byte [ecx + edx], bl
inc edx
cmp eax, edx
jne 0x402fa0
add esi, edx
mov ecx, dword [esp + 0x18]
mov eax, ecx
sub eax, edx
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x38]
cmp ecx, 4
jb 0x40302b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402fe0
cmp dword [ebp + 8], 0
je 0x402f44
mov ecx, esi
xor ecx, ebx
mov eax, ebx
not eax
and eax, esi
add eax, eax
sub eax, ecx
cmp eax, 0x1ff
jl 0x402f44
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402f40
jmp 0x4037d3
mov eax, ecx
cmp ecx, 4
jae 0x402fe0
jmp 0x40302b
mov dword [esp + 0x30], edi
jmp 0x40308f
lea eax, [esp + 0x4d]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 4]
mov edi, dword [esp + 0x2c]
test edi, edi
jne 0x40321c
mov ecx, dword [esp + 0x20]
test ecx, ecx
mov edi, dword [esp + 8]
jne 0x4033e0
lea eax, [esp + 0x3d]
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + 0x3c]
test al, al
je 0x4034f6
movsx ecx, al
mov eax, ecx
cmp dword [ebp + 8], 0
je 0x4030f5
mov eax, esi
sub eax, ebx
mov edx, eax
xor edx, 0x200
not eax
and eax, 0x200
add eax, eax
sub eax, edx
cmp eax, ecx
jl 0x4030f5
mov eax, ecx
sub cl, al
mov byte [esp + 0x3c], cl
test eax, eax
je 0x4031ab
mov ecx, eax
and ecx, 3
je 0x403200
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], ebx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
mov esi, dword [esp + 0x14]
lea edi, [esi + 1]
mov dword [esp + 0x14], edi
movzx ebx, byte [esi]
mov esi, eax
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x403120
add esi, edx
mov eax, dword [esp + 0x18]
mov ecx, eax
sub ecx, edx
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 8]
cmp eax, 4
jb 0x4031ab
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x403160
cmp dword [ebp + 8], 0
je 0x4030c0
mov eax, esi
sub eax, ebx
cmp eax, 0x1ff
jl 0x4030c0
mov ecx, eax
mov edx, dword [esp + 0x30]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x30], edx
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov ebx, eax
jmp 0x4030c0
mov ecx, eax
cmp eax, 4
jae 0x403160
jmp 0x4031ab
mov eax, dword [esp + 0x18]
sub edi, eax
je 0x40309b
mov eax, ebx
sub eax, esi
add eax, 0x200
mov ecx, edi
cmp edi, eax
jl 0x40322d
mov ecx, eax
cmp dword [ebp + 8], 0
jne 0x403235
mov ecx, edi
cmp ecx, 4
mov dword [esp + 0x18], ecx
jl 0x403290
lea eax, [ecx - 4]
mov dword [esp + 4], eax
shr eax, 2
inc eax
and eax, 7
je 0x403294
mov dword [esp + 0x38], ebx
shl eax, 2
mov ebx, esi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [edx + esi]
mov dword [ebx + esi], ecx
add esi, 4
cmp eax, esi
jne 0x403260
add ebx, esi
mov ecx, dword [esp + 0x18]
sub ecx, esi
add edx, esi
mov eax, ecx
mov esi, ebx
mov ebx, dword [esp + 0x38]
cmp dword [esp + 4], 0x1c
jae 0x4032a0
jmp 0x4032e1
mov eax, ecx
jmp 0x4032e1
cmp dword [esp + 4], 0x1c
jb 0x4032e1
nop
nop
nop
nop
nop
mov eax, dword [edx]
mov dword [esi], eax
mov eax, dword [edx + 4]
mov dword [esi + 4], eax
mov eax, dword [edx + 8]
mov dword [esi + 8], eax
mov eax, dword [edx + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [edx + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [esi + 0x1c], eax
add esi, 0x20
add edx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x4032a0
test eax, eax
je 0x403371
mov ecx, eax
and ecx, 7
je 0x4033c0
mov dword [esp + 4], edi
mov dword [esp + 0x38], ebx
mov edi, edx
xor edx, edx
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x403300
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov ebx, dword [esp + 0x38]
mov edx, edi
mov edi, dword [esp + 4]
cmp eax, 8
jb 0x403371
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 0x403330
cmp dword [ebp + 8], 0
je 0x403210
mov eax, esi
sub eax, ebx
cmp eax, 0x1ff
jl 0x403210
mov ecx, ebx
mov ebx, edi
mov edi, edx
add dword [esp + 0x30], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov edx, edi
mov edi, ebx
mov ebx, esi
jmp 0x403210
mov ecx, eax
cmp eax, 8
jae 0x403330
jmp 0x403371
mov ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x20]
sub ecx, edx
je 0x4030ab
mov eax, ebx
sub eax, esi
add eax, 0x200
mov edx, ecx
mov dword [esp + 0x20], ecx
cmp ecx, eax
jl 0x4033f5
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x4033ff
mov edx, dword [esp + 0x20]
test edx, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ebx
je 0x403460
mov eax, esi
and eax, 3
je 0x403460
mov edi, esi
not esi
and esi, 3
lea ebx, [edx - 1]
cmp esi, ebx
jb 0x403422
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x30
push edi
call fcn.0040c490
add esp, 0xc
lea ecx, [esi + edi]
inc ecx
sub ebx, esi
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x18]
cmp ebx, 4
jge 0x403469
test ebx, ebx
je 0x4034a8
push ebx
push 0x30
mov esi, ecx
push ecx
call fcn.0040c490
mov edx, dword [esp + 0x24]
add esp, 0xc
add esi, ebx
jmp 0x4034aa
mov ecx, esi
mov ebx, edx
cmp ebx, 4
jl 0x403444
mov eax, ebx
cmp ebx, 7
jl 0x403475
mov eax, 7
neg eax
lea esi, [ebx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
mov edi, ecx
push ecx
call fcn.0040c490
add esp, 0xc
lea ecx, [esi + edi]
add ecx, 4
sub ebx, esi
add ebx, 0xfffffffc
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x18]
test ebx, ebx
jne 0x403448
mov esi, ecx
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x4033d0
mov ecx, esi
not ecx
mov ebx, dword [esp + 0x38]
and ecx, ebx
mov eax, ebx
not eax
and eax, esi
sub eax, ecx
cmp eax, 0x1ff
jl 0x4033d4
add dword [esp + 0x30], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov ebx, eax
mov edx, dword [esp + 0x18]
jmp 0x4033d4
test byte [esp + 0x1c], 1
je 0x403639
test edi, edi
mov eax, dword [esp + 0x54]
jle 0x40363d
jne 0x40352c
jmp 0x40363d
mov ebx, dword [esp + 0x38]
sub edi, ecx
je 0x40363d
mov eax, ebx
sub eax, esi
add eax, 0x200
mov edx, edi
cmp edi, eax
jl 0x40353d
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x403545
mov edx, edi
test edx, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ebx
mov dword [esp + 8], edi
je 0x4035a0
mov eax, esi
and eax, 3
je 0x4035a0
mov edi, esi
not esi
and esi, 3
lea ebx, [edx - 1]
cmp esi, ebx
jb 0x40356c
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x20
push edi
call fcn.0040c490
add esp, 0xc
lea ecx, [esi + edi]
inc ecx
sub ebx, esi
mov edi, dword [esp + 8]
cmp ebx, 4
jge 0x4035a9
test ebx, ebx
je 0x4035e4
push ebx
push 0x20
mov esi, ecx
push ecx
call fcn.0040c490
add esp, 0xc
add esi, ebx
jmp 0x4035e6
mov ecx, esi
mov ebx, edx
cmp ebx, 4
jl 0x40358a
mov eax, ebx
cmp ebx, 7
jl 0x4035b5
mov eax, 7
neg eax
lea esi, [ebx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040c490
add esp, 0xc
lea ecx, [esi + edi]
add ecx, 4
sub ebx, esi
add ebx, 0xfffffffc
mov edi, dword [esp + 8]
test ebx, ebx
jne 0x40358e
mov esi, ecx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x18]
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x403520
mov eax, esi
mov ebx, dword [esp + 0x38]
sub eax, ebx
cmp eax, 0x1ff
jl 0x403630
add dword [esp + 0x30], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037b1
mov esi, eax
mov ebx, eax
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x18]
jmp 0x403524
mov eax, dword [esp + 0x54]
jmp 0x403524
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x30], edi
inc eax
jmp 0x40103f
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 8]
test eax, eax
jne 0x403753
jmp 0x4027b5
mov ecx, esi
mov ebx, dword [esp + 0xc]
mov edx, ecx
mov dword [esp + 0xc], ebx
nop
nop
nop
nop
mov esi, edx
cmp edx, 4
mov dword [esp + 0x1c], edx
jb 0x40369b
mov eax, dword [ebx]
mov edx, eax
not edx
add eax, 0xfefefeff
and eax, edx
mov edx, esi
mov esi, ebx
add ebx, 4
add edx, 0xfffffffc
test eax, 0x80808080
je 0x403670
jmp 0x4036a1
test esi, esi
mov esi, ebx
je 0x4036c2
mov edx, esi
mov eax, dword [esp + 0xc]
add eax, ecx
xor ecx, ecx
mov esi, dword [esp + 0x1c]
cmp byte [edx + ecx], 0
je 0x4036be
inc ecx
cmp esi, ecx
jne 0x4036af
mov esi, eax
jmp 0x4036c2
mov esi, edx
add esi, ecx
mov ecx, dword [esp + 4]
sub esi, ecx
add dword [esp + 0x34], 4
mov dword [esp + 0x2c], esi
mov byte [esp + 0x4c], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], 0
xor eax, eax
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 8]
jmp 0x402943
mov eax, dword [esp + 0x10]
cmp eax, 4
mov edi, dword [esp + 8]
jb 0x403739
mov esi, eax
and esi, 0xfffffffc
push esi
push 0x30
push edx
mov ebx, edx
mov edi, eax
call fcn.0040c490
mov eax, edi
mov ecx, dword [esp + 0x10]
mov edx, ebx
mov edi, dword [esp + 0x14]
add esp, 0xc
add edx, esi
and eax, 3
mov esi, dword [esp + 0x18]
test eax, eax
jne 0x403753
jmp 0x4027b5
mov byte [edx], 0x30
dec eax
inc edx
test eax, eax
je 0x4027b5
test byte [esp + 0x1c], 0x40
je 0x403746
inc ecx
cmp ecx, 4
jne 0x403746
mov ecx, eax
movzx eax, byte [0x450001]
xor al, 0xb8
mov byte [edx], al
mov eax, ecx
xor ecx, ecx
inc edx
test eax, eax
jne 0x403753
jmp 0x4027b5
fstp st(1)
fdivp st(1)
mov ecx, edx
or ecx, 0x4000000
jmp 0x4022ab
cmp dword [ebp + 8], 0
je 0x4037b7
mov eax, esi
sub eax, ebx
test eax, eax
mov edi, dword [esp + 0x30]
jle 0x4037be
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
mov esi, eax
mov ebx, eax
jmp 0x4037be
xor esi, esi
xor ebx, ebx
jmp 0x4037ba
mov byte [esi], 0
mov edi, dword [esp + 0x30]
mov eax, ebx
xor eax, esi
sub edi, eax
not ebx
and ebx, esi
lea eax, [edi + ebx*2]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
xor ebx, ebx
jmp 0x4037be