Function at 0x401000
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x268
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], eax
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x4c], 0
mov edx, edi
jmp 0x40103b
mov edi, eax
movzx eax, byte [ebx]
mov edx, edi
mov byte [edi], al
inc edi
inc ebx
mov dword [esp + 0x18], edx
test bl, 3
je 0x401050
movzx eax, byte [ebx]
jmp 0x40106e
mov eax, dword [ebx]
mov edx, eax
not edx
and edx, 0x80808080
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
test ecx, edx
je 0x4010ac
cmp al, 0x25
je 0x401108
mov edx, dword [esp + 0x18]
mov esi, dword [ebp + 8]
test al, al
je 0x40396a
test esi, esi
je 0x401037
mov ecx, edi
sub ecx, edx
cmp ecx, 0x1ff
jl 0x401037
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push edx
call esi
add esp, 0xc
test eax, eax
jne 0x401030
jmp 0x40398a
mov ecx, dword [esp + 0x18]
sub ecx, edi
add ecx, 0x200
jmp 0x4010ea
mov dword [edi], eax
add edi, 4
mov eax, dword [ebx + 4]
add ebx, 4
mov edx, eax
not edx
and edx, 0x80808080
mov esi, eax
xor esi, 0x25252525
add esi, 0xfefefeff
add ecx, 0xfffffffc
test esi, edx
jne 0x40106e
lea esi, [eax - 0x1010101]
test edx, esi
jne 0x401076
cmp dword [ebp + 8], 0
je 0x4010c0
cmp ecx, 4
jge 0x4010c0
jmp 0x40106e
mov dword [esp + 0x30], edi
add ebx, 2
mov ecx, ebx
xor edi, edi
jmp 0x401123
mov edx, 1
nop
nop
nop
nop
nop
nop
or edi, edx
inc ecx
movzx eax, byte [ecx - 1]
lea esi, [eax - 0x20]
cmp esi, 0x3f
ja case.0x401134.33
mov edx, 2
jmp dword [esi*4 + 0x43f564]
mov edx, 4
jmp case.0x401134.43
mov edx, 0x400
jmp case.0x401134.43
mov edx, 0x100
test edi, 0x100
je case.0x401134.43
mov edx, edi
and edx, 0x800
add edx, 0x800
jmp case.0x401134.43
mov edx, 8
jmp case.0x401134.43
mov edx, 0x40
jmp case.0x401134.43
or edi, 0x10
movzx eax, byte [ecx]
cmp al, 0x2a
jne 0x40119b
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov dword [esp + 0x48], edx
add eax, 4
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x4011cf
dec ecx
cmp al, 0x2a
je 0x40117e
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x48], 0
cmp dl, 9
ja 0x4011cf
xor esi, esi
nop
movzx eax, al
lea edx, [esi + esi*4]
lea esi, [eax + edx*2]
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x4011b0
mov dword [esp + 0x48], esi
mov dword [esp + 0x10], 0xffffffff
cmp al, 0x2e
jne 0x40123f
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x4011ff
mov esi, edi
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov dword [esp + 0x10], edx
add eax, 4
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x401241
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x10], 0
cmp dl, 9
ja 0x40123f
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [esi + esi*4]
lea esi, [eax + edx*2]
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401220
mov dword [esp + 0x10], esi
mov esi, edi
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
mov edi, dword [esp + 0x30]
ja case.0x401250.74
jmp dword [eax*4 + 0x43f664]
inc ecx
movzx edx, byte [ecx]
mov ebx, ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
mov dword [esp + 0x50], ebx
ja case.0x401270.67
jmp dword [eax*4 + 0x43f72c]
mov ebx, esi
test bl, 0x20
jne 0x4016c3
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 8], 0
cmp dl, 0x75
je 0x401c9f
test ecx, ecx
jns 0x401c9f
neg ecx
mov dword [esp + 0x14], ecx
or ebx, 0x80
jmp 0x401ca3
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x401708
or esi, 0x20
add ecx, 2
jmp case.0x401250.74
lea ebx, [ecx + 1]
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x401b1a
cmp edx, 0x36
jne 0x40125d
cmp byte [ecx + 2], 0x34
jne 0x401b24
or esi, 0x20
add ecx, 3
jmp case.0x401250.74
cmp byte [ecx + 1], 0x68
je 0x40170e
inc ecx
or esi, 0x200
jmp case.0x401250.74
mov ebx, esi
jmp 0x401730
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x401328
mov eax, 0x43f002
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
je 0x401342
mov eax, ecx
mov dword [esp + 0x20], eax
or eax, 0x80000000
sub esp, 0x1c
mov dword [esp + 0x18], eax
fstp qword [esp + 0x10]
lea eax, [esp + 0x58]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x80]
mov dword [esp + 8], eax
lea eax, [esp + 0x44]
mov dword [esp + 4], eax
lea eax, [esp + 0x28]
mov dword [esp], eax
call fcn.004039b0
add esp, 0x1c
test eax, eax
mov ebx, esi
je 0x40138c
or ebx, 0x80
add dword [esp + 0x2c], 8
mov edx, dword [esp + 0x20]
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
test bl, bl
js 0x4013b3
mov al, 0x20
test bl, 4
jne 0x4013b3
mov al, 0x2b
test bl, 2
je 0x4013bc
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0xc]
cmp eax, 0x7000
jne 0x4015c3
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], ebx
jmp 0x4029dd
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x41
je 0x4013f3
mov eax, 0x43f002
mov dword [esp + 4], eax
mov dword [esp + 0x54], edx
mov ebx, 6
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x40140b
mov ebx, eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 4]
test ecx, ecx
mov edx, esi
jns 0x40141e
or edx, 0x80
mov eax, dword [esp + 0x2c]
mov esi, dword [eax]
mov al, 0x2d
test dl, dl
js 0x401578
mov al, 0x20
test dl, 4
jne 0x401578
mov al, 0x2b
test dl, 2
jne 0x401578
mov dword [esp + 8], 0
jmp 0x401582
mov dword [esp + 4], str.0123456789ABCDEFXP
cmp dl, 0x42
je 0x401466
mov dword [esp + 4], 0x43f002
mov byte [esp + 0x40], 0
mov ebx, esi
test bl, 8
je 0x401488
cmp dl, 0x42
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x42], al
mov dword [esp + 0x28], 0x180
mov ecx, 1
test bl, 0x20
je 0x40177b
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov esi, dword [edx + 4]
add edx, 8
mov dword [esp + 0x2c], edx
jmp 0x40178a
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x4014c2
mov eax, 0x43f002
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
fld qword [eax]
mov ecx, dword [esp + 0x10]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov edi, 6
cmp ecx, 0xffffffff
je 0x4014e4
mov edi, eax
lea eax, [edi - 1]
or eax, 0x80000000
sub esp, 0x1c
fstp qword [esp + 0x10]
lea ecx, [esp + 0x58]
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0x80]
mov dword [esp + 8], ecx
lea ecx, [esp + 0x44]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x28]
mov dword [esp], ecx
mov dword [esp + 0x18], eax
call fcn.004039b0
add esp, 0x1c
test eax, eax
mov ebx, esi
je 0x40152d
or ebx, 0x80
mov ecx, dword [esp + 0x28]
cmp ecx, edi
jb 0x401537
mov ecx, edi
mov eax, ecx
cmp ecx, 2
mov dword [esp + 8], edi
jb 0x40171c
mov ecx, edi
mov edi, dword [esp + 0xc]
nop
nop
nop
nop
cmp byte [edi + eax - 1], 0x30
jne 0x402030
mov esi, eax
lea edx, [ecx - 1]
dec esi
mov eax, esi
cmp esi, 2
jb 0x402032
cmp ecx, 1
mov ecx, edx
jne 0x401550
jmp 0x402032
mov byte [esp + 0x41], al
mov al, 1
mov dword [esp + 8], eax
mov eax, ecx
and eax, 0xfffff
shr ecx, 0x14
and ecx, 0x7ff
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], ebx
je 0x401b47
add ecx, 0xfffffc01
mov dword [esp + 0x1c], ecx
mov ecx, 0xffffffff
add esi, ecx
mov ecx, 0xfffff
adc eax, ecx
add esi, 1
adc eax, 0
jmp 0x401b60
mov dword [esp + 0x14], eax
movzx eax, byte [ebx]
mov byte [esp + 0xa4], al
lea esi, [esp + 0xa5]
test edx, edx
je 0x4015eb
mov byte [esp + 0xa5], 0x2e
lea esi, [esp + 0xa6]
mov eax, dword [esp + 0x28]
lea ecx, [eax - 1]
cmp ecx, edx
jbe 0x4015fd
lea eax, [edx + 1]
mov dword [esp + 0x28], eax
cmp eax, 2
mov dword [esp + 0x20], edx
mov dword [esp + 8], eax
jb 0x40169e
mov edi, edx
cmp edx, ecx
jb 0x401616
mov edi, ecx
lea ecx, [edi - 1]
mov edx, 1
cmp ecx, 7
jb 0x401681
mov ecx, edi
and ecx, 0xfffffff8
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx + edx + 1]
mov byte [esi + edx], al
movzx eax, byte [ebx + edx + 2]
mov byte [esi + edx + 1], al
movzx eax, byte [ebx + edx + 3]
mov byte [esi + edx + 2], al
movzx eax, byte [ebx + edx + 4]
mov byte [esi + edx + 3], al
movzx eax, byte [ebx + edx + 5]
mov byte [esi + edx + 4], al
movzx eax, byte [ebx + edx + 6]
mov byte [esi + edx + 5], al
movzx eax, byte [ebx + edx + 7]
mov byte [esi + edx + 6], al
movzx eax, byte [ebx + edx + 8]
mov byte [esi + edx + 7], al
add edx, 8
cmp ecx, edx
jne 0x401630
add esi, edx
inc edx
and edi, 7
je 0x40169e
add ebx, edx
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx + ecx]
mov byte [esi + ecx], al
inc ecx
cmp edi, ecx
jne 0x401690
add esi, ecx
mov eax, dword [esp + 4]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x35], al
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x401f52
dec eax
mov byte [esp + 0x36], 0x2b
mov edi, eax
jmp 0x401f5e
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + 8]
mov dword [esp + 4], eax
mov esi, dword [ecx]
mov eax, dword [ecx + 4]
cmp dl, 0x75
je 0x401c8d
test eax, eax
jns 0x401c8d
neg esi
mov dword [esp + 0x14], esi
mov ecx, 0
sbb ecx, eax
or ebx, 0x80
mov dword [esp + 8], ecx
mov eax, dword [esp + 4]
mov dword [esp + 0x2c], eax
jmp 0x401ca3
inc ecx
jmp 0x40125b
add ecx, 2
or esi, 0x200
jmp case.0x401250.74
mov edx, edi
jmp 0x402032
mov ebx, esi
and ebx, 0xffffffef
mov dword [esp + 0x10], 8
mov dword [esp + 4], str.0123456789ABCDEFXP
cmp dl, 0x58
je 0x401745
mov dword [esp + 4], 0x43f002
mov dword [esp + 0x28], 0x440
mov byte [esp + 0x40], 0
mov ecx, 4
test bl, 8
je 0x401772
cmp dl, 0x58
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x42], al
test bl, 0x20
jne 0x40149e
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
add edx, 4
mov dword [esp + 0x2c], edx
xor esi, esi
mov dword [esp + 0x3c], 0
mov byte [esp + 0x34], 0
mov edx, eax
or edx, esi
mov dword [esp + 0x24], ebx
jne 0x4017b1
mov byte [esp + 0x40], 0
cmp dword [esp + 0x10], 0
je 0x401b2b
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, eax
mov ebx, dword [esp + 0x28]
mov cl, bh
shrd eax, esi, cl
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx + edx]
mov byte [esp + 0x263], cl
mov cl, bh
shr esi, cl
mov dword [esp + 0x1c], ebx
test bh, 0x20
je 0x4017e5
mov eax, esi
xor esi, esi
mov edx, dword [esp + 0x10]
mov ecx, eax
or ecx, esi
jne 0x401805
mov ecx, 1
cmp edx, 2
jge 0x401805
lea ebx, [esp + 0x263]
jmp 0x4018f6
lea ebx, [esp + 0x263]
lea edx, [esp + 0x264]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 8], esi
test byte [esp + 0x24], 0x40
jne 0x401840
mov esi, eax
mov dword [esp + 0x14], ebx
jmp 0x401880
mov esi, eax
mov edi, dword [esp + 0x1c]
inc edi
mov dword [esp + 0x28], edi
mov ecx, edi
shr ecx, 4
xor ecx, edi
test cl, 0xf
je 0x401861
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], ebx
jmp 0x401880
and edi, 0xfffffff0
mov dword [esp + 0x28], edi
mov byte [edx - 2], 0x2c
add edx, 0xfffffffe
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov ebx, 0xffffffff
mov eax, dword [esp + 0x1c]
mov cl, ah
shl ebx, cl
not ebx
and ebx, esi
mov eax, dword [esp + 0x28]
mov cl, ah
mov edi, dword [esp + 8]
shrd esi, edi, cl
movzx ecx, byte [edx + ebx]
mov ebx, dword [esp + 0x14]
mov byte [ebx - 1], cl
mov cl, ah
shr edi, cl
mov dword [esp + 0x1c], eax
test ah, 0x20
mov ecx, ebx
mov dword [esp + 4], edx
jne 0x4018d0
mov eax, esi
mov esi, edi
jmp 0x4018d4
mov eax, edi
xor esi, esi
mov edx, ecx
lea ebx, [ecx - 1]
mov ecx, eax
or ecx, esi
jne 0x401820
lea ecx, [esp + 0x264]
sub ecx, ebx
cmp ecx, dword [esp + 0x10]
jl 0x401820
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x1c]
shl eax, 0x14
and eax, 0xf000000
add eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], ecx
xor edx, edx
mov edi, dword [esp + 0x30]
jmp 0x401f49
mov byte [esp + 0x40], 0
mov ebx, esi
test bl, 8
je 0x40192e
mov word [esp + 0x40], 0x3001
mov dword [esp + 0x28], 0x330
mov dword [esp + 4], str.0123456789ABCDEFXP
mov ecx, 3
test bl, 0x20
je 0x40177b
jmp 0x40149e
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov ebx, str.null
test eax, eax
je 0x401962
mov ebx, eax
mov eax, dword [esp + 0x10]
mov ecx, eax
test eax, eax
jns 0x401971
mov ecx, 0xffffffff
test bl, 3
mov dword [esp + 0x24], esi
je 0x40265a
mov dword [esp + 4], ecx
add ecx, ebx
cmp dword [esp + 0x10], 0
je 0x4029b4
cmp byte [ebx], 0
je 0x402942
lea edx, [ebx + 1]
mov eax, dword [esp + 4]
dec eax
mov dword [esp + 8], edx
test dl, 3
je 0x402946
test eax, eax
je 0x4029b4
mov edx, dword [esp + 8]
cmp byte [edx], 0
je 0x4029b2
lea edx, [ebx + 2]
mov eax, dword [esp + 4]
add eax, 0xfffffffe
mov dword [esp + 8], edx
test dl, 3
je 0x402946
test eax, eax
je 0x4029b4
mov edx, dword [esp + 8]
cmp byte [edx], 0
je 0x4029b2
lea edx, [ebx + 3]
mov eax, dword [esp + 4]
add eax, 0xfffffffd
mov dword [esp + 8], edx
test dl, 3
je 0x402946
test eax, eax
je 0x4029b4
mov edx, dword [esp + 8]
cmp byte [edx], 0
je 0x4029b2
lea eax, [ebx + 4]
add dword [esp + 4], 0xfffffffc
test al, 3
je 0x403961
cmp dword [esp + 4], 0
je 0x4029ac
mov ecx, eax
jmp 0x4029ac
mov byte [esp + 0x263], dl
mov dword [esp + 0x28], 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 + 0x24], 0
xor edx, edx
xor ebx, ebx
mov dword [esp + 0x48], 0
jmp 0x4029e1
mov ecx, dword [esp + 0x2c]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x28], 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
xor edx, edx
xor ebx, ebx
mov dword [esp + 0x24], esi
jmp 0x4029e1
mov eax, dword [esp + 0x2c]
fld qword [eax]
add eax, 8
mov dword [esp + 0x2c], eax
mov ebx, esi
test esi, 0x100
jne 0x401e69
jmp 0x402107
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x18]
sub ecx, esi
add ecx, edi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x2c], edx
mov edx, esi
jmp 0x4036c2
cmp byte [ecx + 2], 0x32
je 0x40244a
mov ecx, ebx
jmp case.0x401250.74
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], 0
lea eax, [esp + 0x264]
jmp 0x40219d
xor ebx, ebx
mov ecx, esi
or ecx, eax
je 0x401b54
mov ebx, 0xfffffc02
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x10]
lea ecx, [ebx*4]
xor ebx, ebx
mov edx, 0x8000000
shrd ebx, edx, cl
shr edx, cl
test cl, 0x20
je 0x401b7c
mov ebx, edx
xor edx, edx
cmp dword [esp + 0x10], 0xf
jl 0x401b87
xor ebx, ebx
xor edx, edx
shld eax, esi, 8
shl esi, 8
add esi, ebx
adc eax, edx
mov ebx, dword [esp + 8]
movzx ecx, bl
lea edx, [esp + 0x40]
mov word [ecx + edx + 1], 0x7830
or bl, 2
mov byte [esp + 0x40], bl
mov ecx, eax
shr ecx, 0x1c
mov edx, dword [esp + 4]
movzx ecx, byte [edx + ecx]
mov byte [esp + 0xa4], cl
mov edx, dword [esp + 0x10]
test edx, edx
je 0x401c75
mov byte [esp + 0xa5], 0x2e
lea ecx, [esp + 0xa6]
mov dword [esp + 0xc], ecx
mov ecx, edx
cmp edx, 0xd
mov ebx, dword [esp + 0x1c]
jb 0x401bee
mov ecx, 0xd
mov edx, dword [esp + 0x10]
mov dword [esp + 8], ecx
sub edx, ecx
jg 0x401bfc
xor edx, edx
mov ecx, dword [esp + 8]
and ecx, 3
mov dword [esp + 0x20], edx
je 0x402452
xor ebx, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
shr edi, 0x18
and edi, 0xf
movzx edx, byte [ecx + edi]
shld eax, esi, 4
mov byte [esp + ebx + 0xa6], dl
shl esi, 4
inc ebx
cmp dword [esp + 0x14], ebx
jne 0x401c20
lea ecx, [esp + 0xa6]
add ecx, ebx
sub dword [esp + 8], ebx
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
cmp dword [esp + 0x10], 4
jae 0x402464
lea esi, [esp + 0xa6]
mov dword [esp + 8], esi
jmp 0x4024eb
lea eax, [esp + 0xa5]
mov dword [esp + 0xc], eax
xor edx, edx
mov dword [esp + 8], eax
mov ecx, eax
jmp 0x4024e7
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], esi
jmp 0x401ca3
mov dword [esp + 0x14], ecx
test ebx, 0x100
jne 0x401e2a
mov esi, 0x200
xor edx, edx
mov dword [esp + 0x24], ebx
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x20], edx
mov ebx, dword [esp + 0x14]
cmp ebx, 0x5f5e100
mov edx, dword [esp + 8]
mov eax, edx
sbb eax, 0
jb 0x401d00
push 0
push 0x5f5e100
push edx
push ebx
call fcn.0040c810
mov dword [esp + 8], edx
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov dword [esp + 0x14], eax
jmp 0x401d10
mov dword [esp + 8], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x5c]
lea ecx, [eax + esi]
test byte [esp + 0x24], 0x40
jne 0x401d70
mov dword [esp + 4], ecx
mov ecx, 0x51eb851f
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
mul ecx
shr edx, 5
imul eax, edx, 0x64
mov edi, ebx
sub edi, eax
movzx eax, word [edi + edi + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x62], ax
add esi, 0xfffffffe
cmp ebx, 0x64
mov ebx, edx
jae 0x401d30
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 4]
jmp 0x401dd0
test ebx, ebx
mov edx, dword [esp + 0x20]
jne 0x401dae
jmp 0x401dd0
mov dword [esp + 4], ecx
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 + esi + 0x63], bl
dec esi
mov ebx, edx
mov edx, ecx
mov ecx, dword [esp + 4]
test ebx, ebx
je 0x401dd0
test byte [esp + 0x24], 0x40
je 0x401d80
cmp edx, 3
je 0x401dc1
mov dword [esp + 4], ecx
inc edx
jmp 0x401d84
mov byte [esp + esi + 0x63], 0x2c
dec esi
dec ecx
xor edx, edx
test ebx, ebx
jne 0x401dae
nop
nop
mov eax, dword [esp + 0x14]
or eax, dword [esp + 8]
je 0x401eb0
lea eax, [esp + esi]
add eax, 0x64
cmp eax, ecx
mov ebx, dword [esp + 0x24]
jne 0x401e15
jmp 0x401cc0
inc edx
mov byte [esp + esi + 0x63], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x64
cmp eax, ecx
je 0x401cc0
test bl, 0x40
je 0x401e01
cmp edx, 3
jne 0x401e00
mov byte [esp + esi + 0x63], 0x2c
dec esi
dec ecx
xor edx, edx
jmp 0x401e07
mov edx, dword [esp + 0x14]
mov eax, 1
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
je 0x401e3e
mov eax, ecx
mov dword [esp + 0x10], 0
cmp edx, 0x400
mov ecx, dword [esp + 8]
sbb ecx, 0
jb 0x401e59
mov dword [esp + 0x10], eax
mov dword [esp + 0x58], edx
mov eax, dword [esp + 8]
mov dword [esp + 0x5c], eax
fild qword [esp + 0x58]
xor eax, eax
test ebx, 0x800
sete al
fld qword [eax*8 + 0x43f550]
cmp ebx, 0x3ffffff
ja 0x401f21
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x40208d
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x40208d
fstp st(0)
fstp st(0)
jmp 0x402107
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
mov ebx, dword [esp + 0x24]
test bl, bl
js 0x401ee3
mov dl, 0x20
test bl, 4
jne 0x401ee3
mov dl, 0x2b
test bl, 2
je 0x401eec
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], dl
and cl, al
movzx eax, cl
add esi, eax
lea eax, [esp + esi]
add eax, 0x64
lea edx, [esi - 0x200]
neg edx
mov dword [esp + 0x28], edx
cmp esi, 0x200
jne 0x401f28
mov byte [eax - 1], 0x30
dec eax
mov dword [esp + 0x28], 1
mov ecx, 1
jmp 0x401f2a
fstp st(0)
jmp 0x402107
mov ecx, edx
mov dword [esp + 0x14], eax
xor edx, edx
cmp dword [esp + 0x10], 0
jg 0x401f3f
mov dword [esp + 0x10], 0
add ecx, 0x3000000
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x10]
jmp 0x4029e1
mov byte [esp + 0x36], 0x2d
mov edi, 1
sub edi, eax
cmp edi, 0x64
mov eax, 4
sbb eax, 0xffffffff
mov dword [esp + 4], eax
mov eax, edi
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 0x14], eax
mov ebx, edi
mov eax, edi
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
sub ebx, dword [esp + 0x14]
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
mov eax, edi
cmp edi, 0x64
mov edi, dword [esp + 0x30]
jb 0x402016
mov ebx, edx
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 edx, dword [esp + 0x20]
sub edx, dword [esp + 8]
inc edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x1c], 0x3000001
jmp 0x40292a
mov edx, ecx
add dword [esp + 0x2c], 8
mov esi, eax
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x3c]
cmp ecx, 0xfffffffd
jl 0x402069
cmp ecx, dword [esp + 8]
jg 0x402069
test ecx, ecx
jle 0x402649
mov edx, esi
sub edx, ecx
mov edi, dword [esp + 0x30]
jg 0x40215a
xor edx, edx
jmp 0x40215a
cmp edx, esi
jle 0x402079
dec esi
mov edi, dword [esp + 0x30]
mov edx, esi
jmp 0x401395
xor eax, eax
sub edx, 1
mov edi, dword [esp + 0x30]
jb 0x402086
mov eax, edx
mov edx, eax
jmp 0x401395
fdiv st(2), st(0)
lea ecx, [ebx + 0x1000000]
cmp ebx, 0x2ffffff
ja 0x402101
fucom st(2)
fnstsw ax
sahf
jbe 0x4020af
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402101
fdiv st(2), st(0)
lea ecx, [ebx + 0x2000000]
cmp ebx, 0x1ffffff
ja 0x402101
fucom st(2)
fnstsw ax
sahf
jbe 0x4020d1
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402101
fdiv st(2), st(0)
lea ecx, [ebx + 0x3000000]
cmp ebx, 0xffffff
ja 0x402101
fucom st(2)
fnstsw ax
sahf
jbe 0x403952
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x403952
fstp st(0)
fstp st(0)
mov ebx, ecx
mov ecx, 6
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x402117
mov ecx, eax
sub esp, 0x1c
fstp qword [esp + 0x10]
lea eax, [esp + 0x58]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x80]
mov dword [esp + 8], eax
lea eax, [esp + 0x44]
mov dword [esp + 4], eax
lea eax, [esp + 0x28]
mov dword [esp], eax
mov esi, ecx
mov dword [esp + 0x18], ecx
call fcn.004039b0
add esp, 0x1c
test eax, eax
je 0x402158
or ebx, 0x80
mov edx, esi
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
test bl, bl
js 0x402178
mov al, 0x20
test bl, 4
jne 0x402178
mov al, 0x2b
test bl, 2
je 0x402181
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov esi, dword [esp + 0x3c]
cmp esi, 0x7000
mov dword [esp + 0x24], ebx
jne 0x4021a6
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
jmp 0x4029dd
test esi, esi
mov eax, edx
mov dword [esp + 0x20], edx
jle 0x402233
xor ecx, ecx
test bl, 0x40
je 0x4021d2
mov ecx, 0x258
sub ecx, esi
mov eax, ecx
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
cmp esi, dword [esp + 0x28]
jae 0x4022db
xor eax, eax
lea edx, [esp + 0xa4]
mov dword [esp + 0x1c], edx
jmp 0x402212
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
movzx edx, byte [edx + eax]
lea esi, [ebx + 1]
mov dword [esp + 0x1c], esi
mov byte [ebx], dl
inc eax
mov edx, dword [esp + 0x3c]
cmp eax, edx
jae 0x402320
mov edx, dword [esp + 0x24]
test dl, 0x40
je 0x4021f0
inc ecx
cmp ecx, 4
jne 0x4021f0
mov ecx, edx
and ecx, 0x40
shr ecx, 6
mov ebx, dword [esp + 0x1c]
mov byte [ebx], 0x2c
inc ebx
jmp 0x4021f4
mov byte [esp + 0xa4], 0x30
mov eax, edx
lea edx, [esp + 0xa5]
test eax, eax
je 0x402257
mov byte [esp + 0xa5], 0x2e
lea edx, [esp + 0xa6]
neg esi
mov eax, dword [esp + 0x20]
mov ebx, eax
cmp eax, esi
jl 0x402265
mov ebx, esi
test ebx, ebx
je 0x402661
mov ecx, edx
and ecx, 3
je 0x402661
lea esi, [edx + 1]
mov byte [edx], 0x30
mov ecx, ebx
dec ecx
je 0x402665
mov edi, esi
and edi, 3
je 0x402665
lea esi, [edx + 2]
mov byte [edx + 1], 0x30
mov ecx, ebx
add ecx, 0xfffffffe
je 0x402665
mov edi, esi
and edi, 3
je 0x402665
lea esi, [edx + 3]
mov byte [edx + 2], 0x30
mov ecx, ebx
add ecx, 0xfffffffd
je 0x402665
mov edi, esi
and edi, 3
je 0x402665
mov byte [edx + 3], 0x30
add edx, 4
lea ecx, [ebx - 4]
jmp 0x402663
xor edx, edx
lea esi, [esp + 0xa4]
jmp 0x402304
mov ebx, esi
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + edx]
inc esi
mov byte [ebx], al
inc edx
cmp edx, dword [esp + 0x28]
jae 0x40237d
mov eax, dword [esp + 0x24]
test al, 0x40
je 0x4022f0
inc ecx
cmp ecx, 4
jne 0x4022f0
mov ecx, eax
and ecx, 0x40
shr ecx, 6
mov byte [esi], 0x2c
inc esi
jmp 0x4022f0
mov esi, dword [esp + 0x1c]
cmp dword [esp + 0x20], 0
je 0x402338
mov byte [ebx + 1], 0x2e
add ebx, 2
mov edx, dword [esp + 0x3c]
mov esi, ebx
mov ecx, dword [esp + 0x28]
mov edi, ecx
sub edi, edx
cmp edi, dword [esp + 0x20]
jbe 0x402350
mov ecx, dword [esp + 0x20]
add ecx, edx
mov dword [esp + 0x28], ecx
cmp eax, ecx
jae 0x402714
mov edi, dword [esp + 0x30]
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + eax]
mov byte [esi], cl
inc esi
inc eax
mov ecx, dword [esp + 0x28]
cmp eax, ecx
jb 0x402360
mov edx, dword [esp + 0x3c]
jmp 0x402718
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
sub eax, edx
jbe 0x40273c
test byte [esp + 0x24], 0x40
jne 0x40391a
cmp dword [esp + 4], edx
je 0x403897
mov edi, esi
and edi, 3
mov edi, dword [esp + 0x30]
je 0x403897
lea esi, [ebx + 2]
mov byte [ebx + 1], 0x30
mov eax, dword [esp + 4]
dec eax
sub eax, edx
je 0x403897
mov edi, esi
and edi, 3
mov edi, dword [esp + 0x30]
je 0x403897
lea esi, [ebx + 3]
mov byte [ebx + 2], 0x30
mov edi, dword [esp + 4]
lea eax, [edi - 2]
mov dword [esp + 8], eax
mov eax, edx
not eax
mov dword [esp + 0x14], eax
add eax, edi
dec eax
cmp dword [esp + 8], edx
je 0x403893
mov edi, esi
and edi, 3
mov edi, dword [esp + 0x30]
je 0x403897
lea esi, [ebx + 4]
mov byte [ebx + 3], 0x30
mov eax, dword [esp + 4]
add eax, 0xfffffffd
sub eax, edx
je 0x403897
mov edx, esi
and edx, 3
je 0x403897
mov byte [ebx + 4], 0x30
add ebx, 5
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x14]
add eax, edx
add eax, 0xfffffffd
mov esi, ebx
jmp 0x403897
add ecx, 3
jmp case.0x401250.74
lea ecx, [esp + 0xa6]
cmp dword [esp + 0x10], 4
jb 0x401c65
mov ebx, eax
mov edx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
mov dword [esp + 8], edx
mov edx, ecx
mov edi, eax
shr edi, 0x18
and edi, 0xf
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx + edi]
mov byte [edx], cl
mov ecx, eax
shr ecx, 0x14
and ecx, 0xf
mov edi, dword [esp + 4]
movzx ecx, byte [edi + ecx]
mov byte [edx + 1], cl
mov ecx, eax
shr ecx, 0x10
and ecx, 0xf
mov edi, dword [esp + 4]
movzx ecx, byte [edi + ecx]
mov byte [edx + 2], cl
shld ebx, esi, 0x10
shl esi, 0x10
shr eax, 0xc
and eax, 0xf
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + eax]
mov byte [edx + 3], al
lea ecx, [edx + 4]
mov edx, dword [esp + 8]
mov eax, ebx
add edx, 0xfffffffc
jne 0x402470
lea esi, [esp + 0xa6]
mov dword [esp + 8], esi
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
cmp byte [esp + 0x54], 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x35], al
test ebx, ebx
js 0x402507
mov byte [esp + 0x36], 0x2b
jmp 0x40250e
mov byte [esp + 0x36], 0x2d
neg ebx
cmp ebx, 0x3e7
mov dword [esp + 0x20], edx
mov dword [esp + 4], ecx
ja 0x402531
cmp ebx, 0x63
jbe 0x40262d
mov dword [esp + 0x14], 5
jmp 0x402539
mov dword [esp + 0x14], 6
mov dword [esp + 0x10], 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 + 0x10], 0
jne 0x40276e
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
jb 0x40276e
mov eax, esi
mov ecx, 0x10624dd3
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 6
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x34]
mov byte [ebx + eax - 3], cl
jmp 0x40276e
cmp ebx, 9
jbe 0x402762
mov dword [esp + 0x14], 4
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x402541
cmp edx, esi
mov edi, dword [esp + 0x30]
jl 0x402653
mov edx, esi
sub edx, ecx
jmp 0x40215a
mov eax, ebx
jmp 0x40294c
mov ecx, ebx
mov esi, edx
mov dword [esp + 4], ebx
cmp ecx, 4
jl 0x4026e1
lea eax, [ecx - 4]
mov ebx, eax
shr ebx, 2
inc ebx
and ebx, 7
je 0x402693
shl ebx, 2
xor edx, edx
mov dword [esi + edx], 0x30303030
add edx, 4
cmp ebx, edx
jne 0x402681
add esi, edx
sub ecx, edx
mov ebx, ecx
cmp eax, 0x1c
jb 0x4026e1
mov dword [esi], 0x30303030
mov dword [esi + 4], 0x30303030
mov dword [esi + 8], 0x30303030
mov dword [esi + 0xc], 0x30303030
mov dword [esi + 0x10], 0x30303030
mov dword [esi + 0x14], 0x30303030
mov dword [esi + 0x18], 0x30303030
mov dword [esi + 0x1c], 0x30303030
add esi, 0x20
lea ecx, [ebx - 0x20]
add ebx, 0xffffffdc
cmp ebx, 0xfffffff8
mov ebx, ecx
jb 0x40269a
test ecx, ecx
je 0x4027a5
mov edx, ecx
and edx, 7
je 0x4027b2
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi + ebx], 0x30
inc ebx
cmp edx, ebx
jne 0x402700
add esi, ebx
mov edx, ecx
sub edx, ebx
jmp 0x4027b4
mov edi, dword [esp + 0x30]
lea eax, [esp + 0xa4]
mov ebx, dword [esp + 0x1c]
sub ebx, eax
add ebx, 0x3000000
mov eax, dword [esp + 0x20]
sub eax, ecx
add eax, edx
mov edx, eax
mov ecx, ebx
jmp 0x40289d
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov ecx, esi
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
test edx, edx
je 0x4027ab
mov byte [esi], 0x2e
inc esi
jmp 0x4028a1
mov byte [esp + 0x34], 3
or bl, 0x30
mov byte [esp + 0x37], bl
add dword [esp + 0x2c], 8
mov ecx, dword [esp + 4]
mov eax, ecx
sub eax, dword [esp + 8]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x28], ecx
xor ebx, ebx
mov dword [esp + 0x1c], 0x3000001
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x20]
jmp 0x4029e1
mov ebx, dword [esp + 4]
jmp 0x4027d2
xor edx, edx
jmp 0x4028a1
mov edx, ecx
cmp ecx, 8
mov ebx, dword [esp + 4]
jb 0x4027d2
mov dword [esi], 0x30303030
mov dword [esi + 4], 0x30303030
add esi, 8
add edx, 0xfffffff8
jne 0x4027bd
mov ecx, dword [esp + 0x28]
lea edx, [ecx + ebx]
cmp edx, dword [esp + 0x20]
jle 0x4027e9
mov ecx, dword [esp + 0x20]
sub ecx, ebx
mov dword [esp + 0x28], ecx
test ecx, ecx
je 0x40288c
mov eax, dword [esp + 0x20]
mov edi, eax
cmp eax, edx
jl 0x4027fd
mov edi, edx
mov edx, ecx
and edx, 3
je 0x402836
mov dword [esp + 8], edi
xor ebx, ebx
nop
nop
nop
nop
nop
nop
mov edi, dword [esp + 0xc]
lea eax, [edi + 1]
mov dword [esp + 0xc], eax
movzx eax, byte [edi]
mov byte [esi + ebx], al
inc ebx
cmp edx, ebx
jne 0x402810
add esi, ebx
mov edx, ecx
sub edx, ebx
mov ebx, dword [esp + 4]
mov edi, dword [esp + 8]
jmp 0x402838
mov edx, ecx
mov eax, ebx
sub eax, edi
cmp eax, 0xfffffffc
ja 0x40288c
mov eax, dword [esp + 0xc]
lea edi, [eax + 1]
mov dword [esp + 0xc], edi
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0xc]
lea edi, [eax + 1]
mov dword [esp + 0xc], edi
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0xc]
lea edi, [eax + 1]
mov dword [esp + 0xc], edi
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
lea edi, [eax + 1]
mov dword [esp + 0xc], edi
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add edx, 0xfffffffc
jne 0x402841
add ebx, ecx
mov edx, dword [esp + 0x20]
sub edx, ebx
mov ecx, 0x3000001
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
test ebx, 0x100
je 0x40292a
mov eax, ebx
and eax, 0x400
sete byte [esp + 0x34]
mov byte [esp + 0x35], 0x20
cmp ebx, 0x1000000
jb 0x40292a
mov dword [esp + 0x20], edx
mov ecx, ebx
shr ecx, 0x18
mov ebx, eax
shr ebx, 0xa
mov edx, 2
sub edx, ebx
mov ebx, dword [esp + 0x24]
cmp eax, 1
mov eax, 0
adc al, 1
test ebx, 0x800
jne 0x4028fe
movzx ecx, byte [ecx + str._kMGT]
mov byte [esp + edx + 0x34], cl
jmp 0x402922
movzx ecx, byte [ecx + str._KMGT]
mov byte [esp + edx + 0x34], cl
mov ecx, ebx
and ecx, 0x1800
cmp ecx, 0x800
jne 0x402922
movzx eax, al
mov byte [esp + eax + 0x35], 0x69
inc eax
mov edx, dword [esp + 0x20]
mov byte [esp + 0x34], al
lea eax, [esp + 0xa4]
sub esi, eax
mov dword [esp + 0x28], esi
xor ebx, ebx
mov dword [esp + 0x14], eax
jmp 0x4029e1
mov ecx, ebx
jmp 0x4029b4
mov ecx, eax
mov eax, dword [esp + 8]
mov dword [esp + 4], ecx
mov edi, ecx
mov dword [esp + 8], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
mov esi, edi
cmp edi, 4
jb 0x402987
mov edx, dword [ecx]
mov eax, edx
not eax
add edx, 0xfefefeff
and edx, eax
lea eax, [ecx + 4]
lea edi, [esi - 4]
test edx, 0x80808080
je 0x402960
jmp 0x40298b
test esi, esi
je 0x4029ac
mov eax, dword [esp + 8]
add eax, dword [esp + 4]
xor edx, edx
mov edi, dword [esp + 0x30]
cmp byte [ecx + edx], 0
je 0x4029a8
inc edx
cmp esi, edx
jne 0x402999
mov ecx, eax
jmp 0x4029b4
add ecx, edx
jmp 0x4029b4
mov edi, dword [esp + 0x30]
jmp 0x4029b4
mov ecx, edx
add dword [esp + 0x2c], 4
mov dword [esp + 0x14], ebx
sub ecx, ebx
mov dword [esp + 0x28], ecx
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x1c], 0
xor edx, edx
xor ebx, ebx
mov ecx, dword [esp + 0x28]
cmp ebx, ecx
jg 0x4029eb
mov ebx, ecx
movsx eax, byte [esp + 0x40]
movsx esi, byte [esp + 0x34]
mov dword [esp + 0x20], edx
mov dword [esp + 0x10], ebx
add edx, ebx
add edx, eax
add edx, esi
mov esi, dword [esp + 0x48]
cmp esi, edx
jg 0x402a0d
mov esi, edx
sub esi, edx
sub dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x24]
test bl, 1
jne 0x402a2b
test bl, 0x10
mov edx, dword [esp + 0x18]
jne 0x402a33
xor ebx, ebx
mov ecx, esi
jmp 0x402a43
mov edx, dword [esp + 0x18]
mov ecx, esi
jmp 0x402a43
mov ecx, dword [esp + 0x10]
cmp esi, ecx
jg 0x402a3d
mov esi, ecx
mov dword [esp + 0x10], esi
xor ecx, ecx
mov dword [esp + 0x48], ecx
add ecx, dword [esp + 0x10]
mov dword [esp + 0x24], ebx
mov esi, dword [ebp + 8]
je 0x403066
test bl, 1
jne 0x402c50
mov ecx, dword [esp + 0x48]
test ecx, ecx
jg 0x402a88
jmp 0x402c50
mov edi, eax
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x48]
sub ecx, eax
test ecx, ecx
jle 0x402c47
mov eax, edx
sub eax, edi
add eax, 0x200
mov ebx, ecx
cmp ecx, eax
jl 0x402a99
mov ebx, eax
test esi, esi
jne 0x402a9f
mov ebx, ecx
mov dword [esp + 4], ebx
test ebx, ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0x48], ecx
je 0x402b10
mov eax, edi
and eax, 3
je 0x402b10
lea eax, [edi + 1]
mov byte [edi], 0x20
mov ecx, dword [esp + 4]
dec ecx
je 0x402b16
mov edx, eax
and edx, 3
je 0x402b16
lea eax, [edi + 2]
mov byte [edi + 1], 0x20
mov ecx, dword [esp + 4]
add ecx, 0xfffffffe
je 0x402b16
mov edx, eax
and edx, 3
je 0x402b16
lea eax, [edi + 3]
mov byte [edi + 2], 0x20
mov ecx, dword [esp + 4]
add ecx, 0xfffffffd
je 0x402b16
mov edx, eax
and edx, 3
je 0x402b16
mov byte [edi + 3], 0x20
add edi, 4
mov eax, dword [esp + 4]
lea ecx, [eax - 4]
jmp 0x402b14
mov ecx, dword [esp + 4]
mov eax, edi
cmp ecx, 4
jl 0x402b97
lea edx, [ecx - 4]
mov edi, edx
shr edi, 2
inc edi
and edi, 7
je 0x402b42
shl edi, 2
xor esi, esi
nop
nop
mov dword [eax + esi], 0x20202020
add esi, 4
cmp edi, esi
jne 0x402b30
add eax, esi
sub ecx, esi
mov edi, ecx
cmp edx, 0x1c
jb 0x402b97
nop
nop
nop
nop
nop
nop
nop
mov dword [eax], 0x20202020
mov dword [eax + 4], 0x20202020
mov dword [eax + 8], 0x20202020
mov dword [eax + 0xc], 0x20202020
mov dword [eax + 0x10], 0x20202020
mov dword [eax + 0x14], 0x20202020
mov dword [eax + 0x18], 0x20202020
mov dword [eax + 0x1c], 0x20202020
add eax, 0x20
lea ecx, [edi - 0x20]
add edi, 0xffffffdc
cmp edi, 0xfffffff8
mov edi, ecx
jb 0x402b50
test ecx, ecx
je 0x402bd0
mov edx, ecx
and edx, 7
mov esi, dword [ebp + 8]
je 0x402be0
mov edi, esi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
mov byte [eax + esi], 0x20
inc esi
cmp edx, esi
jne 0x402bb0
add eax, esi
mov edx, ecx
sub edx, esi
mov esi, edi
cmp ecx, 8
jae 0x402bf0
jmp 0x402c05
mov esi, dword [ebp + 8]
jmp 0x402c05
mov edx, ecx
cmp ecx, 8
jb 0x402c05
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [eax], 0x20202020
mov dword [eax + 4], 0x20202020
add eax, 8
add edx, 0xfffffff8
jne 0x402bf0
test esi, esi
je 0x402a70
mov ecx, eax
mov edx, dword [esp + 0x18]
sub ecx, edx
cmp ecx, 0x1ff
jl 0x402c40
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push edx
call esi
add esp, 0xc
mov edi, eax
test eax, eax
mov eax, dword [esp + 4]
je 0x40398a
mov edx, edi
jmp 0x402a7a
mov edi, eax
jmp 0x402a76
mov dword [esp + 0x48], ecx
movzx eax, byte [esp + 0x40]
mov dword [esp + 0x18], edx
lea ecx, [esp + 0x41]
mov dword [esp + 0xc], ecx
jmp 0x402c6b
mov edi, eax
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x40]
test al, al
je 0x402d7d
movsx edx, al
mov ebx, dword [esp + 0x18]
sub ebx, edi
add ebx, 0x200
cmp ebx, edx
jl 0x402c88
mov ebx, edx
test esi, esi
jne 0x402c8e
mov ebx, edx
sub al, bl
mov byte [esp + 0x40], al
test ebx, ebx
je 0x402d2b
mov eax, ebx
and eax, 3
je 0x402d70
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0xc]
mov ecx, edi
lea edi, [esi + 1]
mov dword [esp + 0xc], edi
mov edi, ecx
movzx ecx, byte [esi]
mov byte [edi + edx], cl
inc edx
cmp eax, edx
jne 0x402cb0
add edi, edx
mov eax, ebx
sub eax, edx
mov edx, edi
mov esi, dword [ebp + 8]
cmp ebx, 4
jb 0x402d2b
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi + 2], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi + 3], cl
add edi, 4
add eax, 0xfffffffc
jne 0x402ce0
test esi, esi
je 0x402c66
mov eax, edi
mov ecx, dword [esp + 0x18]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402c66
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push ecx
call esi
add esp, 0xc
test eax, eax
jne 0x402c60
jmp 0x40398a
mov eax, ebx
cmp ebx, 4
jae 0x402ce0
jmp 0x402d2b
mov eax, dword [esp + 0x1c]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
test byte [esp + 0x24], 0x40
je 0x402db3
and eax, 0xffffff
add eax, dword [esp + 0x10]
mov ecx, dword [esp + 4]
lea ebx, [ecx + 1]
xor edx, edx
div ebx
sub ecx, edx
mov dword [esp + 8], ecx
cmp dword [esp + 0x10], 0
jle 0x40319d
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
jmp 0x402de4
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp + 0x1c]
test ecx, ecx
jle 0x403061
mov eax, edx
sub eax, edi
add eax, 0x200
mov ebx, ecx
mov dword [esp + 0x10], ecx
cmp ecx, eax
jl 0x402df9
mov ebx, eax
test esi, esi
jne 0x402e01
mov ebx, dword [esp + 0x10]
test byte [esp + 0x24], 0x40
mov esi, dword [esp + 8]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ebx
jne 0x402e70
test ebx, ebx
je 0x402e90
mov eax, edi
and eax, 3
je 0x402e90
lea eax, [edi + 1]
mov byte [edi], 0x30
mov ecx, ebx
dec ecx
je 0x402e94
mov edx, eax
and edx, 3
je 0x402e94
lea eax, [edi + 2]
mov byte [edi + 1], 0x30
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffffe
je 0x402e94
mov edx, eax
and edx, 3
je 0x402e94
lea eax, [edi + 3]
mov byte [edi + 2], 0x30
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffffd
je 0x402e94
mov edx, eax
and edx, 3
je 0x402e94
mov byte [edi + 3], 0x30
add edi, 4
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 4]
jmp 0x402e92
mov ecx, ebx
mov eax, edi
test ecx, ecx
jne 0x402f38
mov esi, dword [ebp + 8]
mov edi, eax
jmp 0x402f89
mov ecx, ebx
mov eax, edi
cmp ecx, 4
jl 0x403050
lea ebx, [ecx - 4]
mov edi, ebx
shr edi, 2
inc edi
and edi, 7
mov esi, dword [esp + 8]
je 0x402ed2
shl edi, 2
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [eax + edx], 0x30303030
add edx, 4
cmp edi, edx
jne 0x402ec0
add eax, edx
sub ecx, edx
mov edi, ecx
cmp ebx, 0x1c
jb 0x402f30
nop
nop
nop
nop
nop
nop
nop
mov dword [eax], 0x30303030
mov dword [eax + 4], 0x30303030
mov dword [eax + 8], 0x30303030
mov dword [eax + 0xc], 0x30303030
mov dword [eax + 0x10], 0x30303030
mov dword [eax + 0x14], 0x30303030
mov dword [eax + 0x18], 0x30303030
mov dword [eax + 0x1c], 0x30303030
add eax, 0x20
lea ecx, [edi - 0x20]
add edi, 0xffffffdc
cmp edi, 0xfffffff8
mov edi, ecx
jb 0x402ee0
nop
nop
nop
nop
nop
nop
nop
nop
nop
test ecx, ecx
je 0x402e7c
test cl, 1
jne 0x402f50
mov edx, ecx
jmp 0x402f7d
xor edi, edi
cmp esi, dword [esp + 4]
setne dl
je 0x402f5e
lea edi, [esi + 1]
mov dh, 0x30
test byte [esp + 0x24], 0x40
je 0x402f71
shl dl, 2
add dl, 0x2c
mov dh, dl
mov esi, edi
mov dword [esp + 8], esi
mov byte [eax], dh
inc eax
lea edx, [ecx - 1]
mov esi, eax
mov ebx, dword [ebp + 8]
cmp ecx, 1
mov edi, esi
mov esi, ebx
jne 0x402fd0
test esi, esi
je 0x402dd0
mov eax, edi
mov edx, dword [esp + 0x18]
sub eax, edx
cmp eax, 0x1ff
jl 0x402dd4
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call esi
add esp, 0xc
test eax, eax
je 0x40398a
mov edi, eax
mov edx, eax
jmp 0x402dd4
mov edi, eax
jmp 0x402fed
mov byte [edi], ch
mov byte [edi + 1], cl
add edi, 2
add edx, 0xfffffffe
je 0x402f89
mov ebx, edi
xor ecx, ecx
mov edi, 0
mov esi, dword [esp + 8]
cmp esi, dword [esp + 4]
setne al
je 0x403006
lea edi, [esi + 1]
test byte [esp + 0x24], 0x40
je 0x40300f
mov esi, edi
cmp esi, dword [esp + 4]
setne ah
je 0x40301b
inc esi
mov ecx, esi
test byte [esp + 0x24], 0x40
mov esi, dword [ebp + 8]
je 0x403029
mov dword [esp + 8], ecx
mov ch, 0x30
mov cl, 0x30
test byte [esp + 0x24], 0x40
mov edi, ebx
je 0x40303e
shl ah, 2
add ah, 0x2c
mov cl, ah
test byte [esp + 0x24], 0x40
je 0x402fe0
shl al, 2
add al, 0x2c
mov ch, al
jmp 0x402fe0
mov esi, dword [esp + 8]
test ecx, ecx
jne 0x402f38
jmp 0x402e7c
movzx eax, byte [esp + 0x40]
lea ecx, [esp + 0x41]
mov dword [esp + 0xc], ecx
test al, al
je 0x4031a9
mov dword [esp + 0x18], edx
jmp 0x40308d
movzx eax, byte [esp + 0x40]
test al, al
je 0x4031a5
movsx edx, al
mov ebx, dword [esp + 0x18]
sub ebx, edi
add ebx, 0x200
cmp ebx, edx
jl 0x4030a2
mov ebx, edx
test esi, esi
jne 0x4030a8
mov ebx, edx
sub al, bl
mov byte [esp + 0x40], al
test ebx, ebx
je 0x40314b
mov eax, ebx
and eax, 3
je 0x403190
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0xc]
mov ecx, edi
lea edi, [esi + 1]
mov dword [esp + 0xc], edi
mov edi, ecx
movzx ecx, byte [esi]
mov byte [edi + edx], cl
inc edx
cmp eax, edx
jne 0x4030d0
add edi, edx
mov eax, ebx
sub eax, edx
mov edx, edi
mov esi, dword [ebp + 8]
cmp ebx, 4
jb 0x40314b
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi + 2], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [edi + 3], cl
add edi, 4
add eax, 0xfffffffc
jne 0x403100
test esi, esi
je 0x403080
mov eax, edi
mov ecx, dword [esp + 0x18]
sub eax, ecx
cmp eax, 0x1ff
jl 0x403080
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push ecx
call esi
add esp, 0xc
test eax, eax
je 0x40398a
mov edi, eax
mov dword [esp + 0x18], eax
jmp 0x403080
mov eax, ebx
cmp ebx, 4
jae 0x403100
jmp 0x40314b
lea eax, [esp + 0x41]
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
test ecx, ecx
mov ebx, dword [esp + 0x50]
jne 0x403322
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x403502
mov dword [esp + 0x18], edx
lea eax, [esp + 0x35]
mov dword [esp + 0xc], eax
movzx ecx, byte [esp + 0x34]
test cl, cl
je 0x4036a9
mov esi, dword [ebp + 8]
jmp 0x4031fd
movzx ecx, byte [esp + 0x34]
test cl, cl
je 0x4036a9
movsx edx, cl
mov eax, dword [esp + 0x18]
sub eax, edi
add eax, 0x200
cmp eax, edx
jl 0x403211
mov eax, edx
test esi, esi
jne 0x403217
mov eax, edx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x4032bb
mov ecx, eax
and ecx, 3
je 0x403300
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0xc]
mov ebx, edi
lea edi, [esi + 1]
mov dword [esp + 0xc], edi
mov edi, ebx
movzx ebx, byte [esi]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403240
add edi, edx
mov ecx, eax
sub ecx, edx
mov edx, edi
mov esi, dword [ebp + 8]
mov ebx, dword [esp + 0x50]
cmp eax, 4
jb 0x4032bb
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x403270
test esi, esi
je 0x4031f0
mov eax, edi
mov ecx, dword [esp + 0x18]
sub eax, ecx
cmp eax, 0x1ff
jl 0x4031f0
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push ecx
call esi
add esp, 0xc
test eax, eax
je 0x40398a
mov edi, eax
mov dword [esp + 0x18], eax
jmp 0x4031f0
mov ecx, eax
cmp eax, 4
jae 0x403270
jmp 0x4032bb
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 8]
sub ecx, dword [esp + 4]
je 0x4031b9
mov dword [esp + 0x18], edx
mov eax, edx
sub eax, edi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x403337
mov edx, eax
test esi, esi
jne 0x40333d
mov edx, ecx
cmp edx, 4
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
jl 0x4033a0
lea esi, [edx - 4]
mov eax, esi
shr eax, 2
inc eax
and eax, 7
je 0x4033ac
mov dword [esp + 0x10], esi
mov ebx, dword [esp + 0x18]
shl eax, 2
xor edx, edx
mov esi, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esi + edx]
mov dword [edi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x403370
add edi, edx
mov ecx, dword [esp + 4]
sub ecx, edx
add esi, edx
mov dword [esp + 0x14], esi
mov eax, ecx
mov edx, ebx
mov esi, dword [esp + 0x10]
jmp 0x4033b2
mov eax, edx
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
jmp 0x403401
mov ecx, edx
mov edx, dword [esp + 0x18]
cmp esi, 0x1c
mov ebx, dword [esp + 0x14]
jb 0x403401
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 0x4033c0
test eax, eax
je 0x403450
mov ecx, eax
and ecx, 7
mov esi, dword [ebp + 8]
je 0x403460
mov esi, edi
xor edx, edx
mov edi, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x403420
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov ebx, edi
mov edx, dword [esp + 0x18]
mov edi, esi
mov esi, dword [ebp + 8]
cmp eax, 8
jae 0x403470
jmp 0x4034b1
mov esi, dword [ebp + 8]
jmp 0x4034b1
mov ecx, eax
cmp eax, 8
jb 0x4034b1
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 0x403470
mov dword [esp + 0x14], ebx
test esi, esi
je 0x403310
mov eax, edi
sub eax, edx
cmp eax, 0x1ff
mov ebx, dword [esp + 0x50]
jl 0x403314
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call esi
add esp, 0xc
test eax, eax
je 0x40398a
mov edi, eax
mov edx, eax
jmp 0x403314
mov edx, dword [esp + 0x18]
mov edi, eax
mov ecx, dword [esp + 0x20]
sub ecx, esi
je 0x4031c5
mov eax, edx
sub eax, edi
add eax, 0x200
mov esi, ecx
mov dword [esp + 0x20], ecx
cmp ecx, eax
jl 0x403517
mov esi, eax
cmp dword [ebp + 8], 0
jne 0x403521
mov esi, dword [esp + 0x20]
test esi, esi
mov dword [esp + 0x18], edx
je 0x403580
mov eax, edi
and eax, 3
je 0x403580
lea eax, [edi + 1]
mov byte [edi], 0x30
mov ecx, esi
dec ecx
je 0x403584
mov edx, eax
and edx, 3
je 0x403584
lea eax, [edi + 2]
mov byte [edi + 1], 0x30
mov ecx, esi
add ecx, 0xfffffffe
je 0x403584
mov edx, eax
and edx, 3
je 0x403584
lea eax, [edi + 3]
mov byte [edi + 2], 0x30
mov ecx, esi
add ecx, 0xfffffffd
je 0x403584
mov edx, eax
and edx, 3
je 0x403584
mov byte [edi + 3], 0x30
add edi, 4
lea ecx, [esi - 4]
jmp 0x403582
mov ecx, esi
mov eax, edi
cmp ecx, 4
jl 0x403607
lea edx, [ecx - 4]
mov edi, edx
shr edi, 2
inc edi
and edi, 7
je 0x4035b6
shl edi, 2
xor ebx, ebx
nop
nop
nop
nop
mov dword [eax + ebx], 0x30303030
add ebx, 4
cmp edi, ebx
jne 0x4035a0
add eax, ebx
sub ecx, ebx
mov ebx, dword [esp + 0x50]
mov edi, ecx
cmp edx, 0x1c
jb 0x403607
nop
nop
nop
mov dword [eax], 0x30303030
mov dword [eax + 4], 0x30303030
mov dword [eax + 8], 0x30303030
mov dword [eax + 0xc], 0x30303030
mov dword [eax + 0x10], 0x30303030
mov dword [eax + 0x14], 0x30303030
mov dword [eax + 0x18], 0x30303030
mov dword [eax + 0x1c], 0x30303030
add eax, 0x20
lea ecx, [edi - 0x20]
add edi, 0xffffffdc
cmp edi, 0xfffffff8
mov edi, ecx
jb 0x4035c0
test ecx, ecx
je 0x403655
mov edx, ecx
and edx, 7
je 0x4036a0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax + edi], 0x30
inc edi
cmp edx, edi
jne 0x403620
add eax, edi
mov edx, ecx
sub edx, edi
cmp ecx, 8
jb 0x403655
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [eax], 0x30303030
mov dword [eax + 4], 0x30303030
add eax, 8
add edx, 0xfffffff8
jne 0x403640
cmp dword [ebp + 8], 0
je 0x4034f0
mov ecx, eax
mov edx, dword [esp + 0x18]
sub ecx, edx
cmp ecx, 0x1ff
jl 0x4034f4
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x40398a
mov edx, eax
jmp 0x4034f4
mov edx, ecx
cmp ecx, 8
jae 0x403640
jmp 0x403655
test byte [esp + 0x24], 1
je 0x403889
mov ecx, dword [esp + 0x48]
test ecx, ecx
mov edx, dword [esp + 0x18]
jle 0x4036c2
jne 0x4036da
inc ebx
jmp 0x40103b
mov edx, dword [esp + 0x18]
sub ecx, dword [esp + 0x24]
je 0x4036c2
mov eax, edx
sub eax, edi
add eax, 0x200
mov esi, ecx
cmp ecx, eax
jl 0x4036eb
mov esi, eax
cmp dword [ebp + 8], 0
jne 0x4036f3
mov esi, ecx
test esi, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x48], ecx
je 0x403750
mov eax, edi
and eax, 3
je 0x403750
lea eax, [edi + 1]
mov byte [edi], 0x20
mov ecx, esi
dec ecx
je 0x403754
mov edx, eax
and edx, 3
je 0x403754
lea eax, [edi + 2]
mov byte [edi + 1], 0x20
mov ecx, esi
add ecx, 0xfffffffe
je 0x403754
mov edx, eax
and edx, 3
je 0x403754
lea eax, [edi + 3]
mov byte [edi + 2], 0x20
mov ecx, esi
add ecx, 0xfffffffd
je 0x403754
mov edx, eax
and edx, 3
je 0x403754
mov byte [edi + 3], 0x20
add edi, 4
lea ecx, [esi - 4]
mov eax, edi
jmp 0x403754
mov eax, edi
mov ecx, esi
cmp ecx, 4
jl 0x4037d7
lea edx, [ecx - 4]
mov edi, edx
shr edi, 2
inc edi
and edi, 7
je 0x403786
shl edi, 2
xor ebx, ebx
nop
nop
nop
nop
mov dword [eax + ebx], 0x20202020
add ebx, 4
cmp edi, ebx
jne 0x403770
sub ecx, ebx
add eax, ebx
mov ebx, dword [esp + 0x50]
mov edi, ecx
cmp edx, 0x1c
jb 0x4037d7
nop
nop
nop
mov dword [eax], 0x20202020
mov dword [eax + 4], 0x20202020
mov dword [eax + 8], 0x20202020
mov dword [eax + 0xc], 0x20202020
mov dword [eax + 0x10], 0x20202020
mov dword [eax + 0x14], 0x20202020
mov dword [eax + 0x18], 0x20202020
mov dword [eax + 0x1c], 0x20202020
add eax, 0x20
lea ecx, [edi - 0x20]
add edi, 0xffffffdc
cmp edi, 0xfffffff8
mov edi, ecx
jb 0x403790
test ecx, ecx
mov dword [esp + 0x24], esi
je 0x403810
mov edx, ecx
and edx, 7
je 0x403820
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax + edi], 0x20
inc edi
cmp edx, edi
jne 0x4037f0
mov edx, ecx
sub edx, edi
add eax, edi
mov esi, eax
jmp 0x403822
mov esi, dword [ebp + 8]
mov edi, eax
jmp 0x403847
mov edx, ecx
cmp ecx, 8
mov ecx, dword [ebp + 8]
mov edi, esi
mov esi, ecx
jb 0x403847
nop
nop
mov dword [eax], 0x20202020
mov dword [eax + 4], 0x20202020
add eax, 8
mov edi, eax
add edx, 0xfffffff8
jne 0x403830
test esi, esi
mov ecx, dword [esp + 0x48]
je 0x4036d0
mov eax, edi
mov edx, dword [esp + 0x18]
sub eax, edx
cmp eax, 0x1ff
jl 0x4036d4
mov edi, ecx
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call esi
add esp, 0xc
test eax, eax
je 0x40398a
mov edx, eax
mov ecx, edi
mov edi, eax
jmp 0x4036d4
mov edx, dword [esp + 0x18]
inc ebx
jmp 0x40103b
mov edi, dword [esp + 0x30]
cmp eax, 4
jb 0x40391a
lea edx, [eax - 4]
mov ebx, edx
shr ebx, 2
inc ebx
and ebx, 7
je 0x4038c9
mov dword [esp + 4], edx
shl ebx, 2
xor edx, edx
mov dword [esi + edx], 0x30303030
add edx, 4
cmp ebx, edx
jne 0x4038b3
add esi, edx
sub eax, edx
mov edx, dword [esp + 4]
cmp edx, 0x1c
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
jb 0x403930
mov dword [esi], 0x30303030
mov dword [esi + 4], 0x30303030
mov dword [esi + 8], 0x30303030
mov dword [esi + 0xc], 0x30303030
mov dword [esi + 0x10], 0x30303030
mov dword [esi + 0x14], 0x30303030
mov dword [esi + 0x18], 0x30303030
mov dword [esi + 0x1c], 0x30303030
add esi, 0x20
add eax, 0xffffffe0
cmp eax, 3
ja 0x4038d6
jmp 0x403930
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
test eax, eax
jne 0x403938
jmp 0x402744
mov byte [esi], 0x30
dec eax
inc esi
test eax, eax
je 0x402744
test bl, 0x40
je 0x40392b
inc ecx
cmp ecx, 4
jne 0x40392b
mov byte [esi], 0x2c
xor ecx, ecx
inc esi
test eax, eax
jne 0x403938
jmp 0x402744
fstp st(1)
fdivp st(1)
or ebx, 0x4000000
jmp 0x402107
mov ecx, dword [esp + 4]
jmp 0x40294c
test esi, esi
je 0x403990
mov eax, edi
sub eax, edx
test eax, eax
jle 0x403993
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call esi
add esp, 0xc
mov edi, eax
mov edx, eax
jmp 0x403993
xor edi, edi
xor edx, edx
jmp 0x403993
mov byte [edi], 0
mov eax, dword [esp + 0x4c]
add eax, edi
sub eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret