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 + 0x28], eax
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
lea eax, [esp + 0xa4]
not eax
mov dword [esp + 0x54], eax
mov eax, ecx
mov dword [esp + 0x18], 0
mov edx, edi
jmp 0x40104f
mov edi, eax
mov eax, esi
movzx eax, byte [esi]
mov edx, edi
mov byte [edi], al
inc edi
mov eax, esi
inc eax
mov dword [esp + 0x1c], edx
test al, 3
mov dword [esp + 0x24], edi
mov esi, eax
je 0x401070
movzx eax, byte [eax]
jmp 0x40108e
mov eax, dword [eax]
mov edx, eax
not edx
and edx, 0x80808080
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
test ecx, edx
je 0x4010d4
cmp al, 0x25
je 0x401144
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
test al, al
je 0x4036a1
cmp dword [ebp + 8], 0
je 0x401049
mov ecx, edi
sub ecx, edx
cmp ecx, 0x1ff
jl 0x401049
add dword [esp + 0x18], ecx
push ecx
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x401040
jmp 0x4036d6
mov ecx, dword [esp + 0x1c]
sub ecx, edi
add ecx, 0x200
jmp 0x401122
mov dword [edx], eax
add edx, 4
mov dword [esp + 0x24], edx
mov eax, dword [esi + 4]
add esi, 4
mov edx, eax
not edx
and edx, 0x80808080
mov edi, eax
xor edi, 0x25252525
add edi, 0xfefefeff
add ecx, 0xfffffffc
test edi, edx
jne 0x40108e
lea edi, [eax - 0x1010101]
test edx, edi
jne 0x401096
cmp dword [ebp + 8], 0
mov edx, dword [esp + 0x24]
je 0x4010f0
cmp ecx, 4
jge 0x4010f0
jmp 0x40108e
add esi, 2
xor ebx, ebx
mov ecx, esi
mov esi, dword [esp + 0x18]
jmp 0x401163
mov edx, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
or ebx, edx
inc ecx
movzx eax, byte [ecx - 1]
lea edi, [eax - 0x20]
cmp edi, 0x3f
ja case.0x401174.33
mov edx, 2
jmp dword [edi*4 + 0x445564]
mov edx, 4
jmp case.0x401174.43
mov edx, 0x400
jmp case.0x401174.43
mov edx, 0x100
mov eax, ebx
test ebx, 0x100
je case.0x401174.43
mov edx, ebx
and edx, 0x800
add edx, 0x800
jmp case.0x401174.43
mov edx, 8
jmp case.0x401174.43
mov edx, 0x40
jmp case.0x401174.43
or ebx, 0x10
movzx eax, byte [ecx]
jmp 0x4011bf
dec ecx
cmp al, 0x2a
mov edi, dword [esp + 0x24]
jne 0x4011df
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 0x48], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401223
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x48], 0
cmp dl, 9
ja 0x401223
xor esi, esi
nop
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 0x401200
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x18]
mov dword [esp], 0xffffffff
cmp al, 0x2e
jne 0x40129f
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x40124f
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x40129f
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp], 0
cmp dl, 9
ja 0x40129f
mov dword [esp + 0x18], esi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [esi + esi*4]
lea esi, [eax + edx*2]
mov eax, esi
not eax
and eax, 0x30
and esi, 0xffffffcf
sub esi, eax
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401270
mov dword [esp], esi
mov edx, ebx
mov esi, dword [esp + 0x18]
jmp 0x4012a1
mov edx, ebx
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012ac.74
jmp dword [eax*4 + 0x445664]
inc ecx
movzx ebx, byte [ecx]
mov dword [esp + 0x4c], ecx
movzx eax, bl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x4012ca.67
jmp dword [eax*4 + 0x44572c]
test dl, 0x20
mov dword [esp + 0x18], esi
jne 0x401725
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
cmp bl, 0x75
je 0x402054
test ecx, ecx
mov esi, dword [esp]
jns 0x402057
neg ecx
mov dword [esp + 4], ecx
or edx, 0x80
jmp 0x40205b
movzx ebx, byte [ecx + 1]
cmp bl, 0x6c
jne 0x40176f
mov eax, edx
xor eax, 0x20
add eax, edx
and edx, 0xffffffdf
sub eax, edx
add ecx, 2
mov edx, eax
jmp case.0x4012ac.74
lea eax, [ecx + 1]
movzx ebx, byte [ecx + 1]
cmp ebx, 0x33
je 0x401b6b
cmp ebx, 0x36
jne 0x401b7c
cmp byte [ecx + 2], 0x34
jne 0x401b75
add ecx, 3
or edx, 0x20
jmp case.0x4012ac.74
cmp byte [ecx + 1], 0x68
je 0x401775
inc ecx
or edx, 0x200
jmp case.0x4012ac.74
mov edi, dword [esp]
jmp 0x401792
mov edi, str.0123456789ABCDEFXP
cmp bl, 0x45
je 0x40138b
mov edi, str.0123456789abcdefxp
mov esi, edx
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ebx, 6
mov eax, dword [esp]
cmp eax, 0xffffffff
je 0x4013a2
mov ebx, eax
mov eax, ebx
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x4c]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
call fcn.00403700
add esp, 0x18
mov edx, esi
test eax, eax
je 0x4013df
or edx, 0x80
add dword [esp + 0x28], 8
mov byte [esp + 0x38], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
test dl, dl
js 0x401402
mov al, 0x20
test dl, 4
jne 0x401402
mov al, 0x2b
test dl, 2
je 0x40140b
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov esi, dword [esp + 0x34]
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 8]
cmp esi, 0x7000
je 0x402986
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
movzx ecx, byte [ecx]
mov byte [esp + 0xa4], cl
lea eax, [esp + 0xa5]
mov dword [esp], eax
test ebx, ebx
je 0x40146b
movzx ecx, byte [section..data]
mov edx, ecx
add dl, cl
and dl, 0x7c
sub cl, dl
add cl, 0x3e
mov byte [esp + 0xa5], cl
lea eax, [esp + 0xa6]
mov dword [esp], eax
mov eax, dword [esp + 0x20]
lea edx, [eax - 1]
cmp edx, ebx
jbe 0x40147d
lea eax, [ebx + 1]
mov dword [esp + 0x20], eax
mov dword [esp + 4], eax
cmp eax, 2
mov dword [esp + 0x2c], ebx
jb 0x401547
mov dword [esp + 0x14], edi
mov ecx, ebx
cmp ebx, edx
jb 0x40149a
mov ecx, edx
lea edi, [ecx - 1]
mov edx, 1
cmp edi, 7
jb 0x401518
mov dword [esp + 0x30], esi
mov edi, ecx
and edi, 0xfffffff8
xor edx, edx
mov ebx, dword [esp + 0x10]
mov esi, dword [esp]
nop
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 edi, edx
jne 0x4014c0
add esi, edx
mov dword [esp], esi
inc edx
mov esi, dword [esp + 0x30]
and ecx, 7
mov edi, dword [esp + 0x14]
je 0x401547
mov ebx, esi
mov esi, dword [esp + 0x10]
add esi, edx
xor edx, edx
mov edi, dword [esp]
nop
nop
movzx eax, byte [esi + edx]
mov byte [edi + edx], al
inc edx
cmp ecx, edx
jne 0x401530
add edi, edx
mov dword [esp], edi
mov edi, dword [esp + 0x14]
mov esi, ebx
movzx eax, byte [edi + 0xe]
mov byte [esp + 0x39], al
test esi, esi
jle 0x401d06
dec esi
mov byte [esp + 0x3a], 0x2b
mov edi, esi
jmp 0x401d12
mov dword [esp + 0x14], str.0123456789ABCDEFXP
cmp bl, 0x41
je 0x401579
mov dword [esp + 0x14], str.0123456789abcdefxp
mov ecx, 6
mov eax, dword [esp]
cmp eax, 0xffffffff
je 0x401588
mov ecx, eax
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
test ecx, ecx
jns 0x40159d
or edx, 0x80
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov al, 0x2d
test dl, dl
js 0x4016e5
mov al, 0x20
test dl, 4
jne 0x4016e5
mov al, 0x2b
test dl, 2
jne 0x4016e5
mov dword [esp + 0x10], 0
jmp 0x4016ef
mov dword [esp + 0x30], str.0123456789ABCDEFXP
cmp bl, 0x42
je 0x4015e5
mov dword [esp + 0x30], str.0123456789abcdefxp
mov byte [esp + 0x40], 0
test dl, 8
je 0x401605
cmp bl, 0x42
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x42], al
mov dword [esp + 0x20], 0x180
mov ecx, 1
jmp 0x4017fc
mov edi, str.0123456789ABCDEFXP
cmp bl, 0x47
je 0x401626
mov edi, str.0123456789abcdefxp
mov esi, edx
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, dword [esp]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov ebx, 6
cmp ecx, 0xffffffff
je 0x401645
mov ebx, eax
lea eax, [ebx - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x4c]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x7c]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
call fcn.00403700
add esp, 0x18
test eax, eax
je 0x401681
or esi, 0x80
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x20]
cmp eax, ebx
jb 0x40168f
mov eax, ebx
mov dword [esp + 0xc], esi
mov edi, eax
cmp eax, 2
mov dword [esp + 0x10], ebx
jb 0x401783
mov edx, dword [esp + 8]
mov ecx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
not eax
and eax, 1
mov ebx, edi
and ebx, 0xfffffffe
sub ebx, eax
cmp byte [edx + ebx], 0x30
jne 0x401de6
mov esi, edi
lea eax, [ecx - 1]
dec esi
mov edi, esi
cmp esi, 2
jb 0x401de8
cmp ecx, 1
mov ecx, eax
jne 0x4016b0
jmp 0x401de8
mov byte [esp + 0x41], al
mov al, 1
mov dword [esp + 0x10], eax
mov edi, ecx
and edi, 0xfffff
shr ecx, 0x14
and ecx, 0x7ff
je 0x401ba1
add ecx, 0xfffffc01
mov eax, 0xffffffff
add esi, eax
mov eax, 0xfffff
adc edi, eax
add esi, 1
adc edi, 0
jmp 0x401bb5
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 8]
mov edi, dword [ecx]
mov ecx, dword [ecx + 4]
cmp bl, 0x75
je 0x40225b
test ecx, ecx
mov esi, dword [esp]
jns 0x40204b
neg edi
mov dword [esp + 4], edi
mov edi, ecx
mov ecx, 0
sbb ecx, edi
or edx, 0x80
mov dword [esp + 0x28], eax
test edx, 0x100
je 0x402069
jmp 0x402272
inc ecx
jmp 0x4012b7
add ecx, 2
or edx, 0x200
jmp case.0x4012ac.74
mov eax, ebx
jmp 0x401de8
and edx, 0xffffffef
mov edi, 8
mov dword [esp + 0x30], str.0123456789ABCDEFXP
cmp bl, 0x58
je 0x4017a7
mov dword [esp + 0x30], str.0123456789abcdefxp
mov dword [esp + 0x20], 0x440
mov byte [esp + 0x40], 0
mov ecx, 4
test dl, 8
je 0x4017ff
cmp bl, 0x58
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x42], al
jmp 0x4017ff
mov byte [esp + 0x40], 0
test dl, 8
je 0x4017e7
mov word [esp + 0x40], 0x3001
mov dword [esp + 0x20], 0x330
mov dword [esp + 0x30], str.0123456789ABCDEFXP
mov ecx, 3
mov edi, dword [esp]
mov eax, edx
xor eax, 0xffffffdf
mov dword [esp + 0xc], edx
or edx, 0x20
test edx, eax
je 0x401821
mov eax, dword [esp + 0x28]
mov ebx, dword [eax]
mov esi, dword [eax + 4]
add eax, 8
mov dword [esp + 0x28], eax
jmp 0x401830
mov eax, dword [esp + 0x28]
mov ebx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
xor esi, esi
mov dword [esp + 0x34], 0
mov byte [esp + 0x38], 0
mov eax, ebx
or eax, esi
mov edx, dword [esp + 0xc]
jne 0x401854
mov byte [esp + 0x40], 0
test edi, edi
je 0x401b85
mov eax, 0xffffffff
shl eax, cl
not eax
and eax, ebx
mov edx, dword [esp + 0x20]
mov cl, dh
shrd ebx, esi, cl
mov ecx, dword [esp + 0x30]
movzx eax, byte [ecx + eax]
mov byte [esp + 0x263], al
mov cl, dh
shr esi, cl
test dh, 0x20
je 0x401884
mov ebx, esi
xor esi, esi
mov dword [esp + 0x14], edx
mov eax, ebx
mov dword [esp + 0x10], esi
or eax, esi
mov dword [esp], edi
jne 0x4018ab
mov eax, 1
cmp edi, 2
jge 0x4018ab
lea ecx, [esp + 0x263]
jmp 0x40198d
mov dword [esp + 4], ebx
lea ecx, [esp + 0x263]
lea ebx, [esp + 0x264]
nop
nop
nop
mov edx, ecx
test byte [esp + 0xc], 0x40
jne 0x4018d0
mov ecx, dword [esp + 0x14]
jmp 0x401910
mov esi, dword [esp + 0x14]
lea ecx, [esi + 1]
mov dword [esp + 0x20], ecx
mov eax, ecx
shr eax, 4
xor eax, ecx
test al, 0xf
jne 0x401910
mov eax, 0xfffffffe
sub eax, esi
not eax
and eax, 0xfffffff0
mov dword [esp + 0x20], eax
movzx eax, byte [0x44e68c]
xor al, 0x2c
mov byte [ebx - 2], al
add ebx, 0xfffffffe
mov ecx, dword [esp + 0x20]
mov edx, ebx
nop
nop
nop
nop
nop
mov dword [esp + 0x2c], edx
mov ebx, 0xffffffff
mov cl, ch
shl ebx, cl
not ebx
mov esi, dword [esp + 4]
and ebx, esi
mov edx, dword [esp + 0x20]
mov cl, dh
mov edi, dword [esp + 0x10]
shrd esi, edi, cl
mov eax, dword [esp + 0x30]
movzx eax, byte [eax + ebx]
mov ebx, edi
mov edi, dword [esp + 0x2c]
mov byte [edi - 1], al
shr ebx, cl
mov dword [esp + 0x14], edx
test dh, 0x20
jne 0x401960
mov eax, esi
jmp 0x401964
mov eax, ebx
xor ebx, ebx
lea ecx, [edi - 1]
mov dword [esp + 4], eax
mov dword [esp + 0x10], ebx
or eax, ebx
mov ebx, edi
jne 0x4018c0
lea eax, [esp + 0x264]
sub eax, ecx
mov ebx, edi
cmp eax, dword [esp]
jl 0x4018c0
mov esi, dword [esp + 0x14]
shl esi, 0x14
and esi, 0xf000000
add esi, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], eax
mov dword [esp + 4], 0
mov edx, dword [esp + 0xc]
mov edi, dword [esp]
jmp 0x402990
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov ecx, str.null
test eax, eax
je 0x4019c9
mov ecx, eax
mov eax, dword [esp]
mov edi, eax
test eax, eax
jns 0x4019d7
mov edi, 0xffffffff
test cl, 3
je 0x4026f4
lea ebx, [edi + ecx]
test eax, eax
je 0x402961
cmp byte [ecx], 0
je 0x4028f4
lea eax, [ecx + 1]
mov dword [esp + 0xc], eax
mov eax, edi
not eax
mov dword [esp + 4], edi
lea edi, [eax + edi*2]
mov eax, dword [esp + 0xc]
test al, 3
je 0x4028f8
test edi, edi
je 0x402961
cmp byte [eax], 0
je 0x40368b
lea eax, [ecx + 2]
add edi, edi
sub edi, dword [esp + 4]
test al, 3
je 0x4028f8
test edi, edi
je 0x402961
cmp byte [eax], 0
je 0x40368b
lea eax, [ecx + 3]
mov dword [esp + 0xc], eax
mov eax, edi
not eax
mov dword [esp + 4], edi
lea edi, [eax + edi*2]
mov eax, dword [esp + 0xc]
test al, 3
je 0x4028f8
test edi, edi
je 0x402961
cmp byte [eax], 0
je 0x40368b
mov dword [esp + 0x10], ecx
lea eax, [ecx + 4]
add edi, edi
sub edi, dword [esp + 4]
mov ecx, eax
test al, 3
je 0x4026f8
test edi, edi
je 0x401a91
mov ebx, ecx
mov dword [esp + 0x18], esi
jmp 0x40295d
mov byte [esp + 0x263], bl
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x14], 0
lea ecx, [esp + 0x263]
xor edx, edx
mov dword [esp + 4], 0
xor edi, edi
mov dword [esp + 0x48], 0
jmp 0x402990
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x14], 0
lea ecx, [esp + 0x263]
jmp 0x402986
mov eax, dword [esp + 0x28]
fld qword [eax]
add eax, 8
mov dword [esp + 0x28], eax
test edx, 0x100
mov edi, dword [esp]
je 0x402353
jmp 0x4022a1
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, esi
mov ebx, dword [esp + 0x1c]
sub ecx, ebx
add ecx, edi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x28], edx
mov edx, ebx
mov eax, dword [esp + 0x4c]
jmp 0x403681
cmp byte [ecx + 2], 0x32
je 0x401e3d
mov ecx, eax
jmp case.0x4012ac.74
mov dword [esp + 0x4c], eax
jmp 0x4012bb
mov dword [esp + 0x20], 0
mov dword [esp + 0x14], 0
lea ecx, [esp + 0x264]
jmp 0x402986
mov ecx, esi
or ecx, edi
mov ecx, 0
je 0x401bb1
mov ecx, 0xfffffc02
mov dword [esp + 0x34], ecx
shld edi, esi, 8
shl esi, 8
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x30]
cmp esi, 0xe
mov dword [esp + 0xc], edx
mov dword [esp], ecx
jg 0x401c1d
mov eax, esi
mov esi, ebx
mov edx, eax
or edx, 4
mov ecx, eax
and ecx, 4
imul edx, ecx
mov ebx, eax
and ebx, 0xfb
xor ecx, 4
imul ecx, ebx
add ecx, edx
xor ebx, ebx
mov eax, 0x8000000
shrd ebx, eax, cl
mov edx, 0x8000000
shr edx, cl
test cl, 0x20
je 0x401c0b
mov ebx, edx
xor edx, edx
mov eax, dword [esp + 0x2c]
add eax, ebx
mov dword [esp + 0x2c], eax
adc edi, edx
mov ebx, esi
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
movzx ecx, dl
lea eax, [esp + 0x40]
mov word [ecx + eax + 1], 0x7830
or dl, 2
mov byte [esp + 0x40], dl
mov ecx, edi
shr ecx, 0x1c
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xa4], cl
test esi, esi
mov dword [esp + 0x50], ebx
je 0x401cec
movzx ecx, byte [section..data]
xor cl, 0x3e
mov byte [esp + 0xa5], cl
lea eax, [esp + 0xa6]
mov dword [esp + 8], eax
mov ecx, esi
cmp esi, 0xd
jb 0x401c7e
mov ecx, 0xd
mov eax, esi
sub eax, ecx
mov dword [esp + 4], eax
jg 0x401c90
mov dword [esp + 4], 0
mov ebx, ecx
and ebx, 3
je 0x401e45
mov dword [esp + 0x10], ecx
xor edx, edx
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
shr eax, 0x18
and eax, 0xf
movzx eax, byte [esi + eax]
shld edi, ecx, 4
mov byte [esp + edx + 0xa6], al
shl ecx, 4
inc edx
cmp ebx, edx
jne 0x401cb0
mov dword [esp + 0x2c], ecx
lea eax, [esp + 0xa6]
lea esi, [eax + edx]
mov ecx, dword [esp + 0x10]
sub ecx, edx
mov eax, dword [esp + 0x30]
jmp 0x401e50
lea esi, [esp + 0xa5]
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov edi, esi
jmp 0x401ebf
mov byte [esp + 0x3a], 0x2d
mov edi, 1
sub edi, esi
xor eax, eax
cmp edi, 0x64
setge al
mov esi, eax
mov eax, edi
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, edi
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, [esi + 4]
add bl, 0x30
add edx, edx
lea edx, [edx + edx*4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov byte [esp + 0x38], al
mov byte [esp + esi + 0x3c], bl
mov edx, ecx
sub edx, dword [esp + 0x10]
add dl, 0x30
mov byte [esp + esi + 0x3b], dl
cmp edi, 0x64
mov esi, dword [esp]
jl 0x401dad
mov eax, edi
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 + 0x38]
mov edi, dword [esp + 0x14]
mov byte [edi + eax - 2], dl
mov edx, dword [esp + 4]
mov eax, edx
not eax
and eax, 1
and edx, 0xfffffffe
sub edx, eax
mov edi, dword [esp + 0x2c]
mov eax, edi
not eax
and eax, edx
not edx
and edx, edi
sub edx, eax
mov dword [esp + 4], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], 0x3000001
mov edx, dword [esp + 0xc]
jmp 0x4028d8
mov eax, ecx
add dword [esp + 0x28], 8
mov dword [esp + 0x20], edi
mov ecx, dword [esp + 0x34]
cmp ecx, 0xfffffffd
mov edx, dword [esp + 0xc]
jl 0x401e1b
cmp ecx, dword [esp + 0x10]
jg 0x401e1b
test ecx, ecx
jle 0x40203c
sub edi, ecx
jg 0x402399
xor edi, edi
jmp 0x402399
cmp eax, edi
jle 0x401e2b
dec edi
mov ebx, edi
mov edi, dword [esp + 0x14]
jmp 0x4013e4
xor ebx, ebx
sub eax, 1
jb 0x401e34
mov ebx, eax
mov edi, dword [esp + 0x14]
jmp 0x4013e4
add ecx, 3
jmp case.0x4012ac.74
lea ebx, [esp + 0xa6]
mov eax, esi
mov esi, ebx
cmp eax, 4
jb 0x401eb8
mov edx, edi
mov eax, ecx
mov ecx, dword [esp + 0x2c]
nop
nop
nop
mov dword [esp + 0x10], eax
mov ebx, esi
mov eax, edi
shr eax, 0x18
and eax, 0xf
mov esi, dword [esp + 0x14]
movzx eax, byte [esi + eax]
mov byte [ebx], al
mov eax, edi
shr eax, 0x14
and eax, 0xf
movzx eax, byte [esi + eax]
mov byte [ebx + 1], al
mov eax, edi
shr eax, 0x10
and eax, 0xf
movzx eax, byte [esi + eax]
mov byte [ebx + 2], al
shld edx, ecx, 0x10
shl ecx, 0x10
shr edi, 0xc
and edi, 0xf
movzx eax, byte [esi + edi]
mov byte [ebx + 3], al
mov eax, dword [esp + 0x10]
lea esi, [ebx + 4]
mov edi, edx
add eax, 0xfffffffc
jne 0x401e60
lea edi, [esp + 0xa6]
cmp byte [esp + 0x50], 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x39], al
mov ebx, dword [esp]
test ebx, ebx
js 0x401efb
mov byte [esp + 0x3a], 0x2b
cmp ebx, 0x3e7
ja 0x401f0a
cmp ebx, 0x63
jbe 0x40201c
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], 5
jmp 0x401f16
mov byte [esp + 0x3a], 0x2d
neg ebx
cmp ebx, 0x3e7
jbe 0x401ee4
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], 6
mov dword [esp + 0x2c], 0
mov eax, ebx
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea edi, [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 dword [esp], ebx
sub ebx, edi
mov edi, dword [esp + 0x10]
mov eax, edi
mov byte [esp + 0x38], al
or bl, 0x30
mov byte [esp + edi + 0x38], bl
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 + edi + 0x37], cl
cmp byte [esp + 0x2c], 0
mov ecx, 0x51eb851f
mov edi, dword [esp + 0x14]
jne 0x4027b1
mov ebx, dword [esp]
mov eax, ebx
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x38]
mov edx, dword [esp + 0x10]
mov byte [edx + eax - 2], cl
cmp ebx, 0x3e8
jb 0x4027b1
mov eax, dword [esp]
mov ecx, 0x10624dd3
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 6
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x38]
mov edx, dword [esp + 0x10]
mov byte [edx + eax - 3], cl
jmp 0x4027b1
cmp ebx, 9
jbe 0x4027a5
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], 4
mov cl, 1
mov dword [esp + 0x2c], ecx
jmp 0x401f1e
cmp eax, edi
jl 0x402042
mov eax, edi
sub eax, ecx
mov edi, eax
jmp 0x402399
mov dword [esp + 0x28], eax
jmp 0x402262
mov esi, dword [esp]
mov dword [esp + 4], ecx
xor ecx, ecx
test edx, 0x100
jne 0x402272
mov dword [esp + 0x14], ecx
movzx ecx, byte [0x44e68c]
mov eax, ecx
add al, cl
and al, 0x58
mov ah, cl
sub ah, al
add ah, 0x2c
mov byte [esp + 0x2c], ah
xor cl, 0x2c
mov byte [esp + 0x10], cl
mov edi, 0x200
xor esi, esi
mov dword [esp + 0xc], edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 4]
cmp ebx, 0x5f5e100
mov ecx, dword [esp + 0x14]
mov eax, ecx
sbb eax, 0
jb 0x4020e0
push 0
push 0x5f5e100
push ecx
push ebx
call fcn.0040c470
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0xc]
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov dword [esp + 4], eax
jmp 0x4020f0
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0
lea eax, [esp + 0x5c]
lea ecx, [eax + edi]
test dl, 0x40
jne 0x4021a3
mov dword [esp + 0x30], ecx
mov ecx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ebx, eax
movzx eax, word [ebx + ebx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + edi + 0x62], ax
add edi, 0xfffffffe
cmp ecx, 0x64
mov ecx, edx
jae 0x402110
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 4]
or eax, dword [esp + 0x14]
jne 0x402157
jmp 0x4021c7
inc esi
mov byte [esp + edi + 0x63], 0x30
dec edi
lea eax, [esp + edi]
add eax, 0x64
cmp eax, ecx
je 0x4020a0
test dl, 0x40
je 0x402151
cmp esi, 3
jne 0x402150
movzx eax, byte [esp + 0x10]
mov byte [esp + edi + 0x63], al
dec edi
dec ecx
xor esi, esi
jmp 0x402157
inc esi
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, dword [esp + 0xc]
test ebx, ebx
je 0x402142
test dl, 0x40
je 0x402181
cmp esi, 3
jne 0x402180
movzx eax, byte [esp + 0x2c]
mov byte [esp + edi + 0x63], al
dec edi
dec ecx
xor esi, esi
test ebx, ebx
jne 0x4021a7
jmp 0x402142
cmp byte [esp + edi + 0x64], 0x30
sete al
cmp edi, 0x200
setne cl
mov byte [esp + 0x38], 0
mov byte [esp + 0x40], 0
mov ebx, edx
mov dl, 0x2d
test bl, bl
js 0x4021fc
mov dl, 0x20
test byte [esp + 0xc], 4
jne 0x4021fc
mov dl, 0x2b
test byte [esp + 0xc], 2
je 0x402205
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], dl
and cl, al
movzx eax, cl
add edi, eax
lea ecx, [esp + edi]
add ecx, 0x64
lea eax, [edi - 0x200]
neg eax
mov dword [esp + 0x20], eax
cmp edi, 0x200
jne 0x402238
mov byte [ecx - 1], 0x30
dec ecx
mov dword [esp + 0x20], 1
mov eax, 1
mov edx, dword [esp + 0xc]
mov edi, dword [esp]
mov dword [esp + 4], 0
test edi, edi
jg 0x40224d
xor edi, edi
add eax, 0x3000000
mov dword [esp + 0x14], eax
jmp 0x402990
mov dword [esp + 0x28], eax
mov esi, dword [esp]
mov dword [esp + 4], edi
test edx, 0x100
je 0x402069
mov eax, 1
cmp esi, 0xffffffff
je 0x40227e
mov eax, esi
xor edi, edi
cmp dword [esp + 4], 0x400
mov esi, ecx
sbb ecx, 0
jb 0x402291
mov edi, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], esi
fild qword [esp + 0x58]
xor eax, eax
test edx, 0x800
sete al
fld qword [eax*8 + 0x445550]
cmp edx, 0x3ffffff
ja 0x4022d5
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x4022d9
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x4022d9
fstp st(0)
fstp st(0)
jmp 0x402353
fdiv st(2), st(0)
lea ecx, [edx + 0x1000000]
cmp edx, 0x2ffffff
ja 0x40234d
fucom st(2)
fnstsw ax
sahf
jbe 0x4022fb
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x40234d
fdiv st(2), st(0)
lea ecx, [edx + 0x2000000]
cmp edx, 0x1ffffff
ja 0x40234d
fucom st(2)
fnstsw ax
sahf
jbe 0x40231d
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x40234d
fdiv st(2), st(0)
lea ecx, [edx + 0x3000000]
cmp edx, 0xffffff
ja 0x40234d
fucom st(2)
fnstsw ax
sahf
jbe 0x403692
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x403692
fstp st(0)
fstp st(0)
mov edx, ecx
mov esi, edx
mov ecx, 6
cmp edi, 0xffffffff
je 0x402361
mov ecx, edi
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x4c]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov edi, ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
call fcn.00403700
add esp, 0x18
mov edx, esi
test eax, eax
je 0x402399
or edx, 0x80
mov byte [esp + 0x38], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
test dl, dl
js 0x4023b7
mov al, 0x20
test dl, 4
jne 0x4023b7
mov al, 0x2b
test dl, 2
je 0x4023c0
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov ecx, dword [esp + 0x34]
cmp ecx, 0x7000
jne 0x4023dd
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 8]
jmp 0x402986
mov dword [esp + 4], edi
test ecx, ecx
mov dword [esp + 0xc], edx
jle 0x402479
xor edi, edi
test dl, 0x40
je 0x40240f
mov edi, 0x258
sub edi, ecx
mov eax, edi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, dword [esp + 0xc]
sub edi, eax
cmp ecx, dword [esp + 0x20]
jae 0x4024fa
xor eax, eax
lea esi, [esp + 0xa4]
jmp 0x40244a
mov edx, esi
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + eax]
inc esi
mov byte [edx], cl
inc eax
mov ecx, dword [esp + 0x34]
cmp eax, ecx
jae 0x402569
mov ecx, dword [esp + 0xc]
test cl, 0x40
je 0x402430
inc edi
cmp edi, 4
jne 0x402430
mov edi, ecx
and edi, 0x40
shr edi, 6
movzx ecx, byte [0x44e68c]
mov edx, ecx
add dl, cl
and dl, 0x58
sub cl, dl
add cl, 0x2c
mov byte [esi], cl
inc esi
jmp 0x402430
mov byte [esp + 0xa4], 0x30
lea esi, [esp + 0xa5]
cmp dword [esp + 4], 0
je 0x4024a6
movzx eax, byte [section..data]
xor al, 0x3e
mov byte [esp + 0xa5], al
lea esi, [esp + 0xa6]
neg ecx
mov eax, dword [esp + 4]
mov ebx, eax
cmp eax, ecx
jl 0x4024b4
mov ebx, ecx
test ebx, ebx
je 0x4026ff
mov eax, esi
and eax, 3
je 0x4026ff
mov eax, ebx
mov ebx, esi
not ebx
and ebx, 3
mov dword [esp + 0x10], eax
lea edi, [eax - 1]
cmp ebx, edi
jb 0x4024dd
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x30
push esi
call fcn.0040c560
add esp, 0xc
add esi, ebx
inc esi
sub edi, ebx
mov ebx, dword [esp + 0x10]
jmp 0x402701
mov dword [esp + 0x10], edi
xor eax, eax
mov edi, 0xffffffff
mov ebx, 1
lea esi, [esp + 0xa4]
jmp 0x40253b
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + ebx - 1]
mov byte [esi], cl
mov ecx, esi
inc esi
inc eax
dec edi
inc ebx
cmp eax, dword [esp + 0x20]
jae 0x4025f2
test dl, 0x40
je 0x402520
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, 4
jne 0x402520
mov ecx, edx
and ecx, 0x40
shr ecx, 6
mov dword [esp + 0x10], ecx
movzx ecx, byte [0x44e68c]
xor cl, 0x2c
mov byte [esi], cl
inc esi
jmp 0x402520
mov edi, esi
mov ebx, esi
cmp dword [esp + 4], 0
je 0x402593
movzx ecx, byte [section..data]
mov ch, cl
add ch, cl
and ch, 0x7c
sub cl, ch
add cl, 0x3e
mov byte [edx + 1], cl
add edx, 2
mov ecx, dword [esp + 0x34]
mov ebx, edx
mov edx, dword [esp + 0x20]
mov edi, edx
sub edi, ecx
cmp edi, dword [esp + 4]
jbe 0x4025ab
mov edx, dword [esp + 4]
add edx, ecx
mov dword [esp + 0x20], edx
cmp eax, edx
jae 0x4025c8
nop
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + eax]
mov byte [ebx], cl
inc ebx
inc eax
mov edx, dword [esp + 0x20]
cmp eax, edx
jb 0x4025b0
mov ecx, dword [esp + 0x34]
lea eax, [esp + 0xa4]
sub esi, eax
add esi, 0x3000000
mov dword [esp + 0x14], esi
mov eax, dword [esp + 4]
sub eax, edx
add eax, ecx
mov dword [esp + 4], eax
mov edx, dword [esp + 0xc]
mov esi, ebx
jmp 0x402852
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp], ecx
sub ecx, eax
jbe 0x4026c3
test dl, 0x40
jne 0x402693
cmp dword [esp], eax
je 0x402670
mov eax, esi
and eax, 3
je 0x402670
mov ecx, 2
sub ecx, dword [esp + 0x14]
and ecx, 3
mov eax, dword [esp]
sub eax, ebx
mov edx, ecx
mov dword [esp + 0x2c], ecx
cmp ecx, eax
jb 0x402637
mov edx, eax
mov dword [esp + 0x30], edx
lea eax, [edx + 1]
push eax
push 0x30
push esi
call fcn.0040c560
add esp, 0xc
add edi, dword [esp]
mov eax, dword [esp + 0x2c]
cmp edi, eax
jb 0x402657
mov edi, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
lea esi, [eax + ecx]
add esi, 2
mov ecx, dword [esp]
sub ecx, edi
sub ecx, ebx
mov edx, dword [esp + 0xc]
cmp ecx, 4
jb 0x402693
mov edi, ecx
and edi, 0xfffffffc
push edi
push 0x30
push esi
mov ebx, ecx
call fcn.0040c560
mov ecx, ebx
mov edx, dword [esp + 0x18]
add esp, 0xc
and ecx, 3
add esi, edi
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x4026a6
jmp 0x4026c3
mov byte [esi], 0x30
dec ecx
inc esi
test ecx, ecx
je 0x4026c3
test dl, 0x40
je 0x40269d
inc eax
cmp eax, 4
jne 0x40269d
movzx eax, byte [0x44e68c]
xor al, 0x2c
mov byte [esi], al
xor eax, eax
inc esi
test ecx, ecx
jne 0x4026a6
mov ecx, esi
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x14], ecx
cmp dword [esp + 4], 0
je 0x4027e0
movzx eax, byte [section..data]
xor al, 0x3e
mov byte [esi], al
inc esi
jmp 0x402852
mov dword [esp + 0x10], ecx
mov eax, ecx
jmp 0x4028fc
mov edi, ebx
cmp edi, 4
jl 0x40272d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi], 0x30303030
add esi, 4
mov eax, edi
not eax
and eax, 4
and edi, 0x7ffffffb
sub edi, eax
cmp edi, 3
jg 0x402710
test edi, edi
je 0x40273f
push edi
push 0x30
push esi
call fcn.0040c560
add esp, 0xc
add esi, edi
mov eax, dword [esp + 0x20]
lea ecx, [eax + ebx]
cmp ecx, dword [esp + 4]
jle 0x402756
mov eax, dword [esp + 4]
sub eax, ebx
mov dword [esp + 0x20], eax
test eax, eax
je 0x402840
mov edx, dword [esp + 4]
mov edi, edx
cmp edx, ecx
jl 0x40276a
mov edi, ecx
mov ecx, eax
and ecx, 3
je 0x4027ea
mov dword [esp], edi
mov dword [esp + 0x10], ebx
xor edi, edi
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 8]
lea edx, [ebx + 1]
mov dword [esp + 8], edx
movzx edx, byte [ebx]
mov byte [esi + edi], dl
inc edi
cmp ecx, edi
jne 0x402780
add esi, edi
mov ecx, eax
sub ecx, edi
mov ebx, dword [esp + 0x10]
mov edi, dword [esp]
jmp 0x4027ec
mov byte [esp + 0x38], 3
or bl, 0x30
mov byte [esp + 0x3b], bl
add dword [esp + 0x28], 8
mov eax, esi
sub eax, edi
mov dword [esp + 0x34], eax
lea eax, [esp + 0xa4]
sub esi, eax
mov dword [esp + 0x20], esi
xor edi, edi
mov dword [esp + 0x14], 0x3000001
mov ecx, eax
mov edx, dword [esp + 0xc]
jmp 0x402990
mov dword [esp + 4], 0
jmp 0x402852
mov ecx, eax
mov edx, ebx
sub edx, edi
cmp edx, 0xfffffffc
ja 0x402840
mov edx, dword [esp + 8]
lea edi, [edx + 1]
mov dword [esp + 8], edi
movzx edx, byte [edx]
mov byte [esi], dl
mov edx, dword [esp + 8]
lea edi, [edx + 1]
mov dword [esp + 8], edi
movzx edx, byte [edx]
mov byte [esi + 1], dl
mov edx, dword [esp + 8]
lea edi, [edx + 1]
mov dword [esp + 8], edi
movzx edx, byte [edx]
mov byte [esi + 2], dl
mov edx, dword [esp + 8]
lea edi, [edx + 1]
mov dword [esp + 8], edi
movzx edx, byte [edx]
mov byte [esi + 3], dl
add esi, 4
add ecx, 0xfffffffc
jne 0x4027f5
add ebx, eax
sub dword [esp + 4], ebx
mov dword [esp + 0x14], 0x3000001
mov edx, dword [esp + 0xc]
test edx, 0x100
je 0x4028d8
mov eax, edx
and eax, 0x400
sete byte [esp + 0x38]
sete cl
mov byte [esp + 0x39], 0x20
cmp edx, 0x1000000
jb 0x4028d8
mov dword [esp], esi
mov edi, edx
mov edx, str._kMGT
test edi, 0x800
je 0x40288d
mov edx, str._KMGT
mov esi, dword [esp + 0xc]
mov ebx, esi
shr ebx, 0x18
movzx edx, byte [edx + ebx]
mov edi, eax
shr edi, 0xa
neg edi
mov byte [esp + edi + 0x3a], dl
mov edx, esi
shr eax, 9
or al, cl
mov ecx, esi
and ecx, 0x1800
cmp ecx, 0x800
jne 0x4028cf
movzx ecx, al
mov eax, 4
sub eax, ecx
neg ecx
mov byte [esp + ecx + 0x3c], 0x69
jmp 0x4028d1
xor al, 3
mov esi, dword [esp]
mov byte [esp + 0x38], al
mov eax, esi
lea ecx, [esp + 0xa4]
xor eax, ecx
and esi, dword [esp + 0x54]
add esi, esi
sub esi, eax
mov dword [esp + 0x20], esi
jmp 0x40298e
mov ebx, ecx
jmp 0x402961
mov dword [esp + 0x10], ecx
mov dword [esp + 4], edi
mov dword [esp + 0xc], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, eax
mov ecx, edi
cmp edi, 4
jb 0x40293a
mov eax, dword [ebx]
mov esi, edx
mov edx, 0x1010100
sub edx, eax
or edx, eax
not edx
lea eax, [ebx + 4]
lea edi, [ecx - 4]
test edx, 0x80808080
mov edx, esi
je 0x402910
jmp 0x40293e
test ecx, ecx
je 0x40295d
mov eax, edx
mov esi, dword [esp + 0xc]
add esi, dword [esp + 4]
xor edx, edx
cmp byte [ebx + edx], 0
je 0x402959
inc edx
cmp ecx, edx
jne 0x40294a
mov ebx, esi
jmp 0x40295b
add ebx, edx
mov edx, eax
mov ecx, dword [esp + 0x10]
add dword [esp + 0x28], 4
sub ebx, ecx
mov dword [esp + 0x20], ebx
mov byte [esp + 0x40], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0
xor edi, edi
mov dword [esp + 0x10], ecx
mov esi, edx
mov ebx, dword [esp + 0x20]
cmp edi, ebx
jg 0x4029a0
mov edi, ebx
movsx eax, byte [esp + 0x40]
mov dword [esp], edi
lea edx, [edi + eax]
movsx edi, byte [esp + 0x38]
mov ecx, edx
and ecx, edi
xor edx, edi
add edx, dword [esp + 4]
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x48]
cmp ecx, edx
jg 0x4029c7
mov ecx, edx
sub ecx, edx
sub dword [esp], ebx
mov edx, esi
test dl, 1
mov edi, dword [esp + 0x24]
jne 0x4029f6
test dl, 0x10
mov esi, dword [esp + 0x18]
jne 0x4029e4
xor edx, edx
jmp 0x4029fa
mov dword [esp + 0x18], esi
mov esi, dword [esp]
cmp ecx, esi
jg 0x4029f1
mov ecx, esi
mov dword [esp], ecx
xor ecx, ecx
mov esi, dword [esp + 0x18]
mov dword [esp + 0x48], ecx
add ecx, dword [esp]
mov dword [esp + 0xc], edx
je 0x402f60
test dl, 1
jne 0x402b84
mov ecx, dword [esp + 0x48]
test ecx, ecx
mov edx, dword [esp + 0x1c]
jg 0x402a42
jmp 0x402b88
mov edi, eax
mov edx, eax
mov ecx, dword [esp + 0x48]
sub ecx, ebx
test ecx, ecx
jle 0x402b79
mov dword [esp + 0x18], esi
mov dword [esp + 0x48], ecx
mov esi, edi
not esi
mov ebx, ecx
cmp dword [ebp + 8], 0
je 0x402a73
mov eax, edx
and eax, esi
mov ecx, edx
not ecx
and ecx, edi
sub eax, ecx
mov ecx, dword [esp + 0x48]
add eax, 0x200
mov ebx, ecx
cmp ecx, eax
jl 0x402a73
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x1c], edx
je 0x402af0
mov ecx, edi
and edi, 3
je 0x402af2
mov eax, ebx
mov ebx, esi
and ebx, 3
lea edi, [eax - 1]
cmp ebx, edi
jb 0x402a96
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x20
mov esi, ecx
push ecx
call fcn.0040c560
add esp, 0xc
lea ecx, [ebx + esi]
inc ecx
sub edi, ebx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
cmp edi, 4
jge 0x402afd
test edi, edi
je 0x402b40
push edi
push 0x20
mov ebx, esi
mov esi, ecx
push ecx
call fcn.0040c560
add esp, 0xc
add esi, edi
mov edi, esi
mov esi, ebx
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
jmp 0x402b42
mov ecx, edi
mov edi, ebx
mov esi, dword [esp + 0x18]
cmp edi, 4
jl 0x402abe
mov eax, edi
cmp edi, 7
jl 0x402b09
mov eax, 7
neg eax
lea ebx, [edi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x20
mov esi, ecx
push ecx
call fcn.0040c560
add esp, 0xc
lea ecx, [ebx + esi]
add ecx, 4
sub edi, ebx
add edi, 0xfffffffc
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
test edi, edi
jne 0x402ac2
mov edi, ecx
cmp dword [ebp + 8], 0
mov ecx, dword [esp + 0x48]
je 0x402a38
mov eax, edi
sub eax, edx
cmp eax, 0x1ff
jl 0x402a38
add esi, eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402a30
jmp 0x4036d0
mov dword [esp + 0x48], ecx
movzx eax, byte [esp + 0x40]
jmp 0x402b88
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x1c], edx
lea ecx, [esp + 0x41]
mov dword [esp + 8], ecx
jmp 0x402bab
mov edi, eax
mov dword [esp + 0x1c], eax
movzx eax, byte [esp + 0x40]
test al, al
je 0x402cdd
movsx edx, al
mov ebx, dword [esp + 0x1c]
sub ebx, edi
add ebx, 0x200
cmp ebx, edx
jl 0x402bc8
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x402bd0
mov ebx, edx
movzx eax, al
sub eax, ebx
mov byte [esp + 0x40], al
test ebx, ebx
je 0x402c7b
mov eax, ebx
and eax, 3
je 0x402cd0
mov dword [esp + 0x18], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edi
mov edi, dword [esp + 8]
lea ecx, [edi + 1]
mov dword [esp + 8], ecx
movzx ecx, byte [edi]
mov edi, esi
mov byte [esi + edx], cl
inc edx
cmp eax, edx
jne 0x402c00
add edi, edx
mov eax, ebx
sub eax, edx
mov esi, dword [esp + 0x18]
cmp ebx, 4
jb 0x402c7b
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 2], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 3], cl
add edi, 4
add eax, 0xfffffffc
jne 0x402c30
cmp dword [ebp + 8], 0
je 0x402ba6
mov eax, edi
mov ebx, dword [esp + 0x1c]
sub eax, ebx
mov ecx, eax
xor ecx, 1
mov edx, eax
and edx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x200
jl 0x402ba6
mov ecx, eax
and ecx, esi
xor esi, eax
lea esi, [esi + ecx*2]
push eax
push dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
call ebx
add esp, 0xc
test eax, eax
jne 0x402ba0
jmp 0x4036d0
mov eax, ebx
cmp ebx, 4
jae 0x402c30
jmp 0x402c7b
mov dword [esp + 0x18], esi
mov esi, edi
mov eax, dword [esp + 0x14]
mov ebx, eax
shr ebx, 0x18
xor edi, edi
mov edx, dword [esp + 0xc]
test dl, 0x40
je 0x402d0e
and eax, 0xffffff
add eax, dword [esp]
lea ecx, [ebx + 1]
xor edx, edx
div ecx
mov edi, ebx
sub edi, edx
mov edx, dword [esp + 0xc]
cmp dword [esp], 0
jle 0x4030a9
mov dword [esp + 0x14], ebx
mov ebx, dword [esp]
jmp 0x402d4d
mov dword [esp + 0x18], esi
mov esi, eax
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0xc]
mov ebx, dword [esp]
sub ebx, dword [esp + 0x24]
test ebx, ebx
jle 0x402f55
mov eax, dword [esp + 0x1c]
sub eax, esi
add eax, 0x200
mov ecx, ebx
mov dword [esp + 0x24], ebx
mov dword [esp], ebx
cmp ebx, eax
jl 0x402d69
mov dword [esp + 0x24], eax
cmp dword [ebp + 8], 0
mov ebx, dword [esp + 0x14]
jne 0x402d7a
mov eax, dword [esp]
mov dword [esp + 0x24], eax
test dl, 0x40
jne 0x402de0
cmp dword [esp + 0x24], 0
je 0x402df0
mov eax, esi
and eax, 3
je 0x402df0
mov ecx, esi
mov edx, esi
not edx
and edx, 3
mov eax, dword [esp + 0x24]
lea ecx, [eax - 1]
cmp edx, ecx
jb 0x402da3
mov edx, ecx
mov dword [esp + 0x30], edx
lea eax, [edx + 1]
push eax
push 0x30
push esi
mov dword [esp + 0x38], ecx
call fcn.0040c560
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x30]
add esi, eax
inc esi
sub ecx, eax
mov edx, dword [esp + 0xc]
cmp ecx, 4
jge 0x402df9
jmp 0x402e3c
mov ecx, dword [esp + 0x24]
jmp 0x402e3c
mov ecx, dword [esp + 0x24]
cmp ecx, 4
jl 0x402e3c
mov eax, ecx
cmp ecx, 7
jl 0x402e05
mov eax, 7
neg eax
add eax, ecx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x30], eax
add eax, 4
push eax
push 0x30
push esi
mov dword [esp + 0x38], ecx
call fcn.0040c560
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x30]
add esi, eax
add esi, 4
sub ecx, eax
add ecx, 0xfffffffc
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x402ea0
test cl, 1
jne 0x402e60
mov eax, ecx
cmp ecx, 1
jne 0x402f16
jmp 0x402ea0
mov al, 0x30
test dl, 0x40
je 0x402e88
cmp edi, ebx
jne 0x402e87
movzx eax, byte [0x44e68c]
mov edi, ecx
mov ecx, eax
or cl, 0xd3
not al
or al, 0x2c
and al, cl
mov ecx, edi
not al
xor edi, edi
jmp 0x402e88
inc edi
mov byte [esi], al
inc esi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x402f16
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402d3e
mov edx, esi
mov ecx, esi
not ecx
mov ebx, dword [esp + 0x1c]
and ecx, ebx
mov eax, ebx
not eax
and eax, esi
sub eax, ecx
cmp eax, 0x1ff
jl 0x402d3a
mov esi, dword [esp + 0x18]
add esi, eax
push eax
push dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
call ebx
add esp, 0xc
test eax, eax
jne 0x402d30
jmp 0x4036d0
movzx ecx, byte [0x44e68c]
mov edx, ecx
or dl, 0xd3
not cl
or cl, 0x2c
and cl, dl
mov edx, dword [esp + 0xc]
not cl
xor edi, edi
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402ea0
mov cl, 0x30
test dl, 0x40
je 0x402f41
cmp edi, ebx
jne 0x402f40
movzx edx, byte [0x44e68c]
mov ch, dl
or ch, 0xd3
not dl
or dl, 0x2c
and dl, ch
not dl
xor edi, edi
jmp 0x402f43
inc edi
mov dl, 0x30
mov byte [esi], dl
mov edx, dword [esp + 0xc]
test dl, 0x40
je 0x402f0b
cmp edi, ebx
je 0x402ef0
inc edi
jmp 0x402f0b
movzx eax, byte [esp + 0x40]
mov edi, esi
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x41]
mov dword [esp + 8], ecx
test al, al
jne 0x402f8d
mov dword [esp + 0x18], esi
mov esi, edi
jmp 0x4030b1
movzx eax, byte [esp + 0x40]
test al, al
je 0x40309d
movsx edx, al
mov ecx, dword [esp + 0x1c]
sub ecx, edi
add ecx, 0x200
cmp ecx, edx
jl 0x402fa2
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402faa
mov ecx, edx
sub al, cl
mov byte [esp + 0x40], al
test ecx, ecx
je 0x40304b
mov eax, ecx
and eax, 3
je 0x403090
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], esi
xor edx, edx
nop
nop
nop
mov ebx, edi
mov edi, dword [esp + 8]
lea esi, [edi + 1]
mov dword [esp + 8], esi
movzx ecx, byte [edi]
mov edi, ebx
mov byte [ebx + edx], cl
inc edx
cmp eax, edx
jne 0x402fd0
add edi, edx
mov ecx, dword [esp + 0x24]
mov eax, ecx
sub eax, edx
mov esi, dword [esp + 0x18]
cmp ecx, 4
jb 0x40304b
nop
nop
nop
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 2], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 3], cl
add edi, 4
add eax, 0xfffffffc
jne 0x403000
cmp dword [ebp + 8], 0
je 0x402f80
mov eax, edi
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402f80
add esi, eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036d0
mov edi, eax
mov dword [esp + 0x1c], eax
jmp 0x402f80
mov eax, ecx
cmp ecx, 4
jae 0x403000
jmp 0x40304b
mov dword [esp + 0x18], esi
mov esi, edi
mov edx, dword [esp + 0xc]
jmp 0x4030b1
lea eax, [esp + 0x41]
mov dword [esp + 8], eax
mov ebx, dword [esp + 0x20]
test ebx, ebx
jne 0x4030f6
mov eax, dword [esp + 4]
test eax, eax
mov edi, esi
mov esi, eax
jne 0x4032c8
lea eax, [esp + 0x39]
mov dword [esp + 8], eax
movzx ecx, byte [esp + 0x38]
test cl, cl
je 0x40351d
mov esi, dword [esp + 0x18]
jmp 0x403411
sub ebx, dword [esp + 0x24]
je 0x4030b9
mov eax, dword [esp + 0x1c]
sub eax, esi
add eax, 0x200
mov ecx, ebx
cmp ebx, eax
jl 0x403109
mov ecx, eax
cmp dword [ebp + 8], 0
jne 0x403111
mov ecx, ebx
cmp ecx, 4
mov dword [esp + 0x24], ecx
jl 0x403170
lea edi, [ecx - 4]
mov eax, edi
shr eax, 2
inc eax
and eax, 7
je 0x403178
mov dword [esp], edi
shl eax, 2
xor edx, edx
mov edi, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [edi + edx]
mov dword [esi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x403140
add esi, edx
mov ecx, dword [esp + 0x24]
sub ecx, edx
add edi, edx
mov dword [esp + 0x10], edi
mov eax, ecx
mov edx, dword [esp + 0xc]
mov edi, dword [esp]
jmp 0x403178
mov eax, ecx
mov edi, dword [esp + 0x10]
jmp 0x4031d1
cmp edi, 0x1c
mov edi, dword [esp + 0x10]
jb 0x4031d1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [edi]
mov dword [esi], eax
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
mov eax, dword [edi + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [edi + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [edi + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [edi + 0x1c]
mov dword [esi + 0x1c], eax
add esi, 0x20
add edi, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x403190
test eax, eax
je 0x403261
mov ecx, eax
and ecx, 7
je 0x4032b0
mov dword [esp + 0x10], ebx
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x4031f0
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
cmp eax, 8
jb 0x403261
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edi]
mov byte [esi], al
movzx eax, byte [edi + 1]
mov byte [esi + 1], al
movzx eax, byte [edi + 2]
mov byte [esi + 2], al
movzx eax, byte [edi + 3]
mov byte [esi + 3], al
movzx eax, byte [edi + 4]
mov byte [esi + 4], al
movzx eax, byte [edi + 5]
mov byte [esi + 5], al
movzx eax, byte [edi + 6]
mov byte [esi + 6], al
movzx eax, byte [edi + 7]
add edi, 8
mov byte [esi + 7], al
add esi, 8
add ecx, 0xfffffff8
jne 0x403220
mov dword [esp + 0x10], edi
cmp dword [ebp + 8], 0
je 0x4030f0
mov eax, esi
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 0x1ff
jl 0x4030f0
mov esi, dword [esp + 0x18]
add esi, eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036d0
mov dword [esp + 0x18], esi
mov esi, eax
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0xc]
jmp 0x4030f0
mov ecx, eax
cmp eax, 8
jae 0x403220
jmp 0x403261
sub esi, ebx
je 0x4030c9
mov eax, dword [esp + 0x1c]
sub eax, edi
add eax, 0x200
mov ebx, esi
cmp esi, eax
jl 0x4032db
mov ebx, eax
cmp dword [ebp + 8], 0
jne 0x4032e3
mov ebx, esi
test ebx, ebx
mov dword [esp + 4], esi
mov dword [esp + 0x24], ebx
je 0x403360
mov eax, edi
and eax, 3
je 0x403360
mov ecx, edi
mov eax, ebx
mov ebx, edi
not ebx
and ebx, 3
lea edi, [eax - 1]
cmp ebx, edi
jb 0x40330a
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x30
mov esi, ecx
push ecx
call fcn.0040c560
add esp, 0xc
lea ecx, [ebx + esi]
inc ecx
sub edi, ebx
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 4]
mov ebx, dword [esp + 0x24]
cmp edi, 4
jge 0x403369
test edi, edi
je 0x4033ac
push edi
push 0x30
mov esi, ecx
push ecx
call fcn.0040c560
mov edx, dword [esp + 0x18]
add esp, 0xc
add esi, edi
mov edi, esi
mov esi, dword [esp + 4]
cmp dword [ebp + 8], 0
jne 0x4033b8
jmp 0x4032c0
mov ecx, edi
mov edi, ebx
cmp edi, 4
jl 0x403332
mov eax, edi
cmp edi, 7
jl 0x403375
mov eax, 7
neg eax
lea esi, [edi + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.0040c560
add esp, 0xc
lea ecx, [esi + ebx]
add ecx, 4
sub edi, esi
add edi, 0xfffffffc
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 4]
mov ebx, dword [esp + 0x24]
test edi, edi
jne 0x403336
mov edi, ecx
cmp dword [ebp + 8], 0
je 0x4032c0
mov eax, edi
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 0x1ff
jl 0x4032c0
add dword [esp + 0x18], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036d6
mov edi, eax
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0xc]
jmp 0x4032c0
mov edx, dword [esp + 0xc]
movzx ecx, byte [esp + 0x38]
test cl, cl
je 0x403521
movsx edx, cl
mov eax, dword [esp + 0x1c]
sub eax, edi
add eax, 0x200
cmp eax, edx
jl 0x403425
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x40342d
mov eax, edx
sub cl, al
mov byte [esp + 0x38], cl
test eax, eax
je 0x4034cb
mov ecx, eax
and ecx, 3
je 0x403510
mov dword [esp + 0x18], esi
xor edx, edx
nop
nop
nop
nop
mov esi, dword [esp + 8]
mov ebx, edi
lea edi, [esi + 1]
mov dword [esp + 8], edi
mov edi, ebx
movzx ebx, byte [esi]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403450
add edi, edx
mov ecx, eax
sub ecx, edx
mov esi, dword [esp + 0x18]
cmp eax, 4
jb 0x4034cb
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x403480
cmp dword [ebp + 8], 0
je 0x403400
mov eax, edi
mov edx, dword [esp + 0x1c]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403400
add esi, eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036d0
mov edi, eax
mov dword [esp + 0x1c], eax
jmp 0x403400
mov ecx, eax
cmp eax, 4
jae 0x403480
jmp 0x4034cb
mov esi, dword [esp + 0x18]
test dl, 1
je 0x403679
mov ecx, dword [esp + 0x48]
test ecx, ecx
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x1c]
jle 0x403681
jne 0x403560
jmp 0x403681
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
sub ecx, ebx
je 0x403681
mov eax, edx
sub eax, edi
add eax, 0x200
mov ebx, ecx
cmp ecx, eax
jl 0x403571
mov ebx, eax
cmp dword [ebp + 8], 0
jne 0x403579
mov ebx, ecx
test ebx, ebx
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x24], ebx
je 0x4035f0
mov eax, edi
and eax, 3
je 0x4035f0
mov ecx, edi
mov eax, ebx
mov ebx, edi
not ebx
and ebx, 3
lea edi, [eax - 1]
cmp ebx, edi
jb 0x4035a8
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x20
mov esi, ecx
push ecx
call fcn.0040c560
add esp, 0xc
lea ecx, [ebx + esi]
inc ecx
sub edi, ebx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
cmp edi, 4
jge 0x4035f9
test edi, edi
je 0x40363c
push edi
push 0x20
mov esi, ecx
push ecx
call fcn.0040c560
add esp, 0xc
add esi, edi
mov edi, esi
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
jmp 0x40363e
mov ecx, edi
mov edi, ebx
cmp edi, 4
jl 0x4035d0
mov eax, edi
cmp edi, 7
jl 0x403605
mov eax, 7
neg eax
lea esi, [edi + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.0040c560
add esp, 0xc
lea ecx, [esi + ebx]
add ecx, 4
sub edi, esi
add edi, 0xfffffffc
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
test edi, edi
jne 0x4035d4
mov edi, ecx
mov eax, dword [esp + 0x4c]
cmp dword [ebp + 8], 0
je 0x403554
mov eax, edi
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403550
add esi, eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036d0
mov edi, eax
mov edx, eax
jmp 0x403550
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], esi
inc eax
jmp 0x40104f
mov ebx, eax
jmp 0x402961
fstp st(1)
fdivp st(1)
or edx, 0x4000000
jmp 0x402353
cmp dword [ebp + 8], 0
je 0x4036dc
mov eax, edi
sub eax, edx
lea ecx, [eax + 0x1ff]
cmp ecx, 0x200
mov esi, dword [esp + 0x18]
jl 0x4036e3
add esi, eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
mov edi, eax
mov edx, eax
jmp 0x4036e3
xor edi, edi
xor edx, edx
jmp 0x4036e3
xor edi, edi
xor edx, edx
jmp 0x4036df
mov byte [edi], 0
mov esi, dword [esp + 0x18]
mov eax, edx
xor eax, edi
sub esi, eax
not edx
and edx, edi
lea eax, [esi + edx*2]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret