Function at 0x401000
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x270
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], eax
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
lea eax, [esp + 0xac]
not eax
mov dword [esp + 0x5c], eax
mov eax, ecx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x1c], esi
jmp 0x401052
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x1c], ecx
mov eax, edi
inc eax
mov dword [esp + 0x20], esi
mov edi, eax
test al, 3
je 0x401070
movzx eax, byte [eax]
jmp 0x401093
mov eax, dword [eax]
mov esi, eax
not esi
and esi, 0x80808080
lea ecx, [eax + eax]
and ecx, 0x4a4a4a4a
neg ecx
add ecx, eax
add ecx, 0x24242424
test ecx, esi
je 0x401107
cmp al, 0x25
je 0x40118d
mov esi, dword [ebp + 8]
test al, al
je 0x403794
test esi, esi
je 0x401040
mov esi, dword [esp + 0x1c]
mov edx, esi
mov ebx, dword [esp + 0x20]
xor edx, ebx
mov ecx, ebx
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
lea edx, [ecx + 1]
cmp edx, 0x200
jl 0x401100
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov esi, eax
mov eax, edi
movzx eax, byte [edi]
mov dword [esp + 0x1c], esi
jmp 0x401044
mov esi, ebx
jmp 0x401044
mov ecx, dword [esp + 0x20]
not ecx
mov edx, dword [esp + 0x1c]
jmp 0x40115b
mov esi, dword [esp + 0x1c]
mov dword [esi], eax
add esi, 4
mov dword [esp + 0x1c], esi
mov eax, dword [edi + 4]
add edi, 4
mov esi, eax
not esi
and esi, 0x80808080
lea ebx, [eax + eax]
and ebx, 0x4a4a4a4a
neg ebx
add ebx, eax
add ebx, 0x24242424
add edx, 4
test ebx, esi
jne 0x401093
lea ebx, [eax - 0x1010101]
test esi, ebx
jne 0x40109b
cmp dword [ebp + 8], 0
je 0x401120
mov esi, edx
xor esi, dword [esp + 0x20]
mov ebx, edx
and ebx, ecx
add ebx, ebx
sub esi, ebx
add esi, 0x200
cmp esi, 4
jge 0x401120
jmp 0x401093
add edi, 2
mov ecx, edi
xor ebx, ebx
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
jmp 0x4011b0
or ebx, 1
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x4011c0.33
jmp dword [edx*4 + 0x44c564]
mov eax, ebx
xor eax, 4
add eax, ebx
and ebx, 0xfffffffb
sub eax, ebx
inc ecx
mov ebx, eax
jmp 0x4011b0
or ebx, 8
inc ecx
jmp 0x4011b0
or ebx, 0x400
inc ecx
jmp 0x4011b0
or ebx, 0x40
inc ecx
jmp 0x4011b0
test ebx, 0x100
jne 0x401204
or ebx, 0x100
inc ecx
jmp 0x4011b0
or ebx, 2
inc ecx
jmp 0x4011b0
test ebx, 0x800
jne 0x401215
or ebx, 0x800
inc ecx
jmp 0x4011b0
mov eax, ebx
xor eax, 0x1000
add eax, ebx
and ebx, 0xffffefff
jmp 0x4011d1
or ebx, 0x10
movzx eax, byte [ecx]
cmp al, 0x2a
jne 0x40124d
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov dword [esp + 0x34], edx
add eax, 4
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401293
dec ecx
cmp al, 0x2a
je 0x401230
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x34], 0
cmp dl, 9
ja 0x401293
mov dword [esp + 0x18], ebx
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [ebx + ebx*4]
lea ebx, [eax + edx*2]
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401270
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 4], 0xffffffff
cmp al, 0x2e
jne 0x401303
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x4012c1
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov dword [esp + 4], edx
add eax, 4
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x401303
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 4], 0
cmp dl, 9
ja 0x401303
mov dword [esp + 0x18], ebx
xor ebx, ebx
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [ebx + ebx*4]
lea ebx, [eax + edx*2]
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x4012e0
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x18]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x40130e.74
jmp dword [eax*4 + 0x44c664]
inc ecx
jmp case.0x40130e.74
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x401352
add ecx, 2
or ebx, 0x20
jmp case.0x40130e.74
lea eax, [ecx + 1]
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x40136d
cmp edx, 0x36
jne 0x401ab8
cmp byte [ecx + 2], 0x34
jne 0x401373
or ebx, 0x20
jmp 0x401377
cmp byte [ecx + 1], 0x68
je 0x401355
inc ecx
jmp 0x401358
inc ecx
jmp 0x40137d
add ecx, 2
mov eax, ebx
xor eax, 0x200
add eax, ebx
and ebx, 0xfffffdff
sub eax, ebx
mov ebx, eax
jmp case.0x40130e.74
cmp byte [ecx + 2], 0x32
je 0x401377
mov ecx, eax
jmp case.0x40130e.74
add ecx, 3
movzx edx, byte [ecx]
mov dword [esp + 0x50], ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x401390.67
jmp dword [eax*4 + 0x44c72c]
test bl, 0x20
jne 0x401672
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x2c], eax
xor esi, esi
cmp dl, 0x75
je 0x40213b
test ecx, ecx
mov edx, ecx
jns 0x40213d
neg edx
or ebx, 0x80
jmp 0x40213d
mov eax, dword [esp + 4]
jmp 0x4016c9
mov esi, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x4013e7
mov esi, str.0123456789abcdefxp
mov eax, dword [esp + 0x2c]
fld qword [eax]
mov ecx, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x4013fd
mov ecx, eax
add dword [esp + 0x2c], 8
mov dword [esp + 8], ecx
mov eax, ecx
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x50]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x40]
call fcn.004037e0
add esp, 0x18
test eax, eax
je 0x401ca6
mov eax, ebx
xor eax, 0x80
add eax, ebx
and ebx, 0xffffff7f
sub eax, ebx
mov ebx, eax
jmp 0x401ca6
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x41
je 0x401469
mov eax, str.0123456789abcdefxp
mov dword [esp + 0xc], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x401486
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 4]
test edx, edx
jns 0x401497
or ebx, 0x80
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
mov al, 0x2d
test bl, bl
mov dword [esp + 0x24], ecx
js 0x4015fc
mov al, 0x20
test bl, 4
jne 0x4015fc
mov al, 0x2b
test bl, 2
jne 0x4015fc
mov dword [esp + 8], 0
jmp 0x401606
mov dword [esp + 0x24], str.0123456789ABCDEFXP
cmp dl, 0x42
je 0x4014e3
mov dword [esp + 0x24], str.0123456789abcdefxp
mov byte [esp + 0x44], 0
test bl, 8
je 0x401503
cmp dl, 0x42
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x46], al
mov dword [esp + 0x28], 0x180
mov ecx, 1
test bl, 0x20
je 0x401718
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov esi, dword [eax + 4]
add eax, 8
jmp 0x401723
mov esi, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x401539
mov esi, str.0123456789abcdefxp
mov eax, dword [esp + 0x2c]
fld qword [eax]
mov ecx, dword [esp + 4]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov edx, 6
cmp ecx, 0xffffffff
je 0x401557
mov edx, eax
lea eax, [edx - 1]
and eax, 0x7fffffff
mov dword [esp + 8], edx
lea ecx, [edx*2 - 1]
sub ecx, eax
add ecx, 0x7fffffff
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x50]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x40]
call fcn.004037e0
add esp, 0x18
test eax, eax
je 0x4015a9
or ebx, 0x80
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 8]
cmp ecx, edx
jb 0x4015b7
mov ecx, edx
mov dword [esp + 0x10], esi
mov eax, ecx
cmp ecx, 2
jb 0x401c55
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
mov ecx, edx
mov edx, dword [esp + 0x18]
cmp byte [edx + eax - 1], 0x30
jne 0x401c53
mov esi, eax
lea edx, [ecx - 1]
dec esi
mov eax, esi
cmp esi, 2
jb 0x401c55
cmp ecx, 1
mov ecx, edx
jne 0x4015d0
jmp 0x401c55
mov byte [esp + 0x45], al
mov al, 1
mov dword [esp + 8], eax
mov ecx, edx
xor ecx, 0xfff00000
mov esi, edx
or esi, 0xfffff
and esi, ecx
shr edx, 0x14
and edx, 0x7ff
mov dword [esp + 0x18], ebx
je 0x401add
add edx, 0xfffffc01
mov dword [esp + 0x30], edx
mov edx, 0xffffffff
add edx, 1
mov ecx, 0xfffff
adc ecx, 0
mov ebx, dword [esp + 0x24]
and edx, ebx
and ecx, esi
not edx
mov eax, 0xffffffff
add ebx, eax
mov eax, 0xfffff
adc esi, eax
add ebx, edx
not ecx
adc esi, ecx
add ebx, 2
mov dword [esp + 0x24], ebx
adc esi, 0
jmp 0x401af4
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + 8]
mov dword [esp + 0x18], eax
mov eax, dword [ecx]
mov esi, dword [ecx + 4]
cmp dl, 0x75
je 0x401c44
test esi, esi
jns 0x401c44
neg eax
mov ecx, 0
sbb ecx, esi
mov edx, ebx
xor edx, 0x80
add edx, ebx
and ebx, 0xffffff7f
sub edx, ebx
mov esi, ecx
mov ebx, edx
mov edx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], eax
jmp 0x40213d
and ebx, 0xffffffef
mov eax, 8
mov dword [esp + 0x24], str.0123456789ABCDEFXP
cmp dl, 0x58
je 0x4016de
mov dword [esp + 0x24], str.0123456789abcdefxp
mov dword [esp + 4], eax
mov dword [esp + 0x28], 0x440
mov byte [esp + 0x44], 0
mov ecx, 4
test bl, 8
je 0x40170f
cmp dl, 0x58
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x46], al
test bl, 0x20
jne 0x401519
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
xor esi, esi
add eax, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], 0
mov byte [esp + 0x3c], 0
mov eax, edx
or eax, esi
jne 0x40174a
mov byte [esp + 0x44], 0
cmp dword [esp + 4], 0
je 0x401ac1
mov eax, edx
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov cl, ch
shrd eax, esi, cl
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
movzx eax, byte [eax + edx]
mov byte [esp + 0x26b], al
mov eax, dword [esp + 0x10]
mov cl, ah
shr esi, cl
mov edx, eax
test ah, 0x20
jne 0x401790
mov eax, dword [esp + 0xc]
jmp 0x401794
mov eax, esi
xor esi, esi
mov dword [esp + 0xc], eax
mov dword [esp + 0x30], esi
or eax, esi
jne 0x4017bc
mov ecx, 1
cmp dword [esp + 4], 2
jge 0x4017bc
lea esi, [esp + 0x26b]
mov eax, dword [esp + 4]
jmp 0x4018c0
lea esi, [esp + 0x26b]
lea eax, [esp + 0x26c]
mov dword [esp + 8], eax
mov dword [esp + 0x18], ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
test bl, 0x40
jne 0x4017f0
mov dword [esp + 8], esi
jmp 0x401846
mov ebx, esi
lea esi, [edx + 1]
mov dword [esp + 0x28], esi
mov eax, 0xe
sub eax, edx
and eax, 0xf
mov ecx, esi
shr ecx, 4
mov edx, ecx
xor edx, 0xfffffff0
or ecx, 0xf
and ecx, edx
xor ecx, eax
cmp ecx, 0xf
jne 0x401840
and esi, 0xfffffff0
mov dword [esp + 0x28], esi
movzx eax, byte [0x44f001]
xor al, 0x89
mov ecx, dword [esp + 8]
mov byte [ecx - 2], al
add ecx, 0xfffffffe
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x28]
jmp 0x401846
mov edx, esi
mov dword [esp + 8], ebx
mov ebx, 0xffffffff
mov cl, dh
shl ebx, cl
not ebx
mov esi, dword [esp + 0xc]
and ebx, esi
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov cl, ah
mov edx, dword [esp + 0x30]
shrd esi, edx, cl
mov eax, dword [esp + 0x24]
movzx eax, byte [eax + ebx]
mov ebx, dword [esp + 8]
mov byte [ebx - 1], al
mov eax, dword [esp + 0x10]
mov cl, ah
shr edx, cl
mov ecx, edx
mov edx, eax
test dh, 0x20
jne 0x401890
mov eax, esi
jmp 0x401894
mov eax, ecx
xor ecx, ecx
lea esi, [ebx - 1]
mov dword [esp + 0xc], eax
mov dword [esp + 0x30], ecx
or eax, ecx
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 4]
jne 0x4017e0
lea ecx, [esp + 0x26c]
sub ecx, esi
cmp ecx, eax
jl 0x4017e0
mov dword [esp + 0xc], esi
shl edx, 0x14
and edx, 0xf000000
add edx, ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xc]
xor esi, esi
jmp 0x402b77
mov byte [esp + 0x44], 0
test bl, 8
je 0x4018f3
mov word [esp + 0x44], 0x3001
mov dword [esp + 0x28], 0x330
mov dword [esp + 0x24], str.0123456789ABCDEFXP
mov ecx, 3
test bl, 0x20
je 0x401718
jmp 0x401519
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov ecx, str.null
test eax, eax
je 0x401927
mov ecx, eax
mov eax, dword [esp + 4]
mov edx, eax
test eax, eax
jns 0x401936
mov edx, 0xffffffff
test cl, 3
mov dword [esp + 0xc], ecx
je 0x4027fa
mov dword [esp + 8], edx
add edx, ecx
test eax, eax
je 0x402b3e
cmp byte [ecx], 0
je 0x402a28
inc ecx
mov eax, dword [esp + 8]
dec eax
mov esi, ecx
test cl, 3
je 0x402a48
test eax, eax
je 0x402b3e
cmp byte [esi], 0
je 0x402b3c
mov eax, dword [esp + 0xc]
lea ecx, [eax + 2]
mov eax, dword [esp + 8]
add eax, 0xfffffffe
mov esi, ecx
test cl, 3
je 0x402a48
test eax, eax
je 0x402b3e
cmp byte [esi], 0
je 0x402b3c
mov eax, dword [esp + 0xc]
lea ecx, [eax + 3]
mov eax, dword [esp + 8]
add eax, 0xfffffffd
mov esi, ecx
test cl, 3
je 0x402a48
test eax, eax
je 0x402b3e
cmp byte [esi], 0
je 0x402b3c
mov eax, dword [esp + 0xc]
add eax, 4
add dword [esp + 8], 0xfffffffc
mov esi, eax
test al, 3
je 0x40378b
cmp dword [esp + 8], 0
je 0x4019ef
mov edx, esi
mov edi, dword [esp + 0x1c]
jmp 0x402b3e
mov byte [esp + 0x26b], dl
mov dword [esp + 0x28], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x26b]
xor ebx, ebx
xor esi, esi
xor eax, eax
mov dword [esp + 0x34], 0
jmp 0x402b77
mov ecx, dword [esp + 0x2c]
movzx eax, byte [ecx]
mov byte [esp + 0x26b], al
mov dword [esp + 0x28], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x38], 0
add ecx, 4
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x26b]
jmp 0x402b73
mov eax, dword [esp + 0x2c]
fld qword [eax]
add eax, 8
mov dword [esp + 0x2c], eax
test ebx, 0x100
jne 0x402303
jmp 0x402448
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x4c]
sub ecx, esi
add ecx, edi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x2c], edx
jmp 0x40376e
mov dword [esp + 0x50], eax
jmp 0x401381
mov dword [esp + 0x28], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x26c]
jmp 0x402b73
xor eax, eax
mov ecx, dword [esp + 0x24]
or ecx, esi
je 0x401aec
mov eax, 0xfffffc02
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x54]
lea ecx, [eax*4]
xor ebx, ebx
mov eax, 0x8000000
shrd ebx, eax, cl
mov edx, 0x8000000
shr edx, cl
test cl, 0x20
je 0x401b19
mov ebx, edx
xor edx, edx
cmp dword [esp + 0x54], 0xf
jl 0x401b24
xor ebx, ebx
xor edx, edx
mov eax, dword [esp + 0x24]
shld esi, eax, 8
shl eax, 8
add eax, ebx
mov dword [esp + 0x24], eax
adc esi, edx
mov edx, dword [esp + 8]
movzx ecx, dl
lea eax, [esp + 0x44]
mov word [ecx + eax + 1], 0x7830
or dl, 2
mov byte [esp + 0x44], dl
mov ecx, esi
shr ecx, 0x1c
mov eax, dword [esp + 0xc]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xac], cl
mov ebx, dword [esp + 0x54]
test ebx, ebx
je 0x401c2e
movzx ecx, byte [section..data]
xor cl, 0xa4
mov byte [esp + 0xad], cl
lea eax, [esp + 0xae]
mov dword [esp + 0x14], eax
mov ecx, ebx
cmp ebx, 0xd
mov edx, dword [esp + 0x30]
jb 0x401b9c
mov ecx, 0xd
mov eax, ebx
sub eax, ecx
mov dword [esp + 8], eax
jg 0x401bae
mov dword [esp + 8], 0
mov eax, ecx
and eax, 3
je 0x401f13
mov dword [esp + 4], ecx
xor edx, edx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x10], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
shr eax, 0x18
and eax, 0xf
mov ecx, dword [esp + 0xc]
movzx eax, byte [ecx + eax]
shld esi, ebx, 4
mov byte [esp + edx + 0xae], al
mov eax, dword [esp + 0x10]
shl ebx, 4
inc edx
cmp eax, edx
jne 0x401bd0
mov dword [esp + 0x24], ebx
lea eax, [esp + 0xae]
lea ebx, [eax + edx]
mov ecx, dword [esp + 4]
sub ecx, edx
mov edx, dword [esp + 0x30]
cmp dword [esp + 0x54], 4
jae 0x401f25
lea eax, [esp + 0xae]
mov dword [esp + 0xc], eax
mov esi, dword [esp + 8]
jmp 0x401fa1
lea ebx, [esp + 0xad]
mov dword [esp + 0x14], ebx
xor esi, esi
mov dword [esp + 0xc], ebx
jmp 0x401f9d
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x2c], ecx
mov edx, eax
jmp 0x40213d
mov edx, ecx
add dword [esp + 0x2c], 8
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x38]
cmp ecx, 0xfffffffd
jl 0x401c86
cmp ecx, dword [esp + 8]
jg 0x401c86
test ecx, ecx
jle 0x40212c
mov esi, eax
sub esi, ecx
jg 0x40248f
xor esi, esi
jmp 0x40248f
cmp edx, eax
jle 0x401c91
dec eax
mov dword [esp + 8], eax
jmp 0x401ca2
mov dword [esp + 8], 0
sub edx, 1
jb 0x401ca2
mov dword [esp + 8], edx
mov esi, dword [esp + 0x10]
mov byte [esp + 0x3c], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
test bl, bl
js 0x401cc4
mov al, 0x20
test bl, 4
jne 0x401cc4
mov al, 0x2b
test bl, 2
je 0x401ccd
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
cmp eax, 0x7000
jne 0x401ceb
mov dword [esp + 0x10], 0
mov ecx, edx
jmp 0x402b73
mov dword [esp + 0x24], eax
movzx ecx, byte [edx]
mov byte [esp + 0xac], cl
lea eax, [esp + 0xad]
mov dword [esp + 4], eax
cmp dword [esp + 8], 0
je 0x401d27
movzx ecx, byte [section..data]
xor cl, 0xa4
mov byte [esp + 0xad], cl
lea eax, [esp + 0xae]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
lea ecx, [eax - 1]
cmp ecx, dword [esp + 8]
mov dword [esp + 0x10], esi
jbe 0x401d57
mov eax, edx
mov esi, dword [esp + 8]
mov ecx, esi
and ecx, 1
mov edx, esi
mov esi, dword [esp + 0x10]
xor edx, 1
lea ecx, [edx + ecx*2]
mov edx, eax
mov eax, ecx
mov dword [esp + 0x28], ecx
cmp eax, 2
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], eax
jb 0x401e1a
mov dword [esp + 0xc], edx
lea ecx, [eax - 1]
lea esi, [eax - 2]
mov edx, 1
cmp esi, 7
jb 0x401de9
mov dword [esp + 0x54], ecx
mov esi, ecx
and esi, 0xfffffff8
xor edx, edx
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 4]
nop
movzx eax, byte [ebx + edx + 1]
mov byte [ecx + edx], al
movzx eax, byte [ebx + edx + 2]
mov byte [ecx + edx + 1], al
movzx eax, byte [ebx + edx + 3]
mov byte [ecx + edx + 2], al
movzx eax, byte [ebx + edx + 4]
mov byte [ecx + edx + 3], al
movzx eax, byte [ebx + edx + 5]
mov byte [ecx + edx + 4], al
movzx eax, byte [ebx + edx + 6]
mov byte [ecx + edx + 5], al
movzx eax, byte [ebx + edx + 7]
mov byte [ecx + edx + 6], al
movzx eax, byte [ebx + edx + 8]
mov byte [ecx + edx + 7], al
add edx, 8
cmp esi, edx
jne 0x401d90
add ecx, edx
mov dword [esp + 4], ecx
inc edx
mov ecx, dword [esp + 0x54]
and ecx, 7
mov esi, dword [esp + 0x10]
je 0x401e1a
add dword [esp + 0xc], edx
xor edx, edx
mov esi, ecx
mov ecx, dword [esp + 4]
nop
nop
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + edx]
mov byte [ecx + edx], al
inc edx
cmp esi, edx
jne 0x401e00
add ecx, edx
mov dword [esp + 4], ecx
mov esi, dword [esp + 0x10]
movzx eax, byte [esi + 0xe]
mov byte [esp + 0x3d], al
mov ecx, dword [esp + 0x24]
mov eax, ecx
dec eax
js 0x401e32
mov byte [esp + 0x3e], 0x2b
jmp 0x401e3e
mov byte [esp + 0x3e], 0x2d
mov eax, 1
sub eax, ecx
mov dword [esp + 0xc], eax
xor ecx, ecx
cmp eax, 0x64
setge cl
mov dword [esp + 0x24], ecx
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, dword [esp + 0xc]
sub ebx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
mov eax, dword [esp + 0x24]
lea esi, [eax + 4]
mov dword [esp + 0x10], esi
add bl, 0x30
add edx, edx
lea edx, [edx + edx*4]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x10]
mov byte [esp + 0x3c], dl
mov byte [esp + eax + 0x40], bl
mov edx, ecx
sub edx, dword [esp + 0x54]
add dl, 0x30
mov byte [esp + eax + 0x3f], dl
mov eax, dword [esp + 0xc]
cmp eax, 0x64
jl 0x401ee6
mov ecx, 0x51eb851f
mul ecx
mov ecx, edx
shr ecx, 5
mov eax, ecx
mov edx, 0x1999999a
mul edx
add edx, edx
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
or dl, 0x30
lea eax, [esp + 0x3c]
mov esi, dword [esp + 0x10]
mov byte [esi + eax - 2], dl
mov eax, dword [esp + 0x30]
mov esi, eax
xor esi, 1
add eax, eax
and eax, 0xfffffffc
add esi, dword [esp + 8]
sub esi, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x10], 0x3000001
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 4]
jmp 0x402a14
lea ebx, [esp + 0xae]
cmp dword [esp + 0x54], 4
jb 0x401c1a
mov dword [esp + 0x10], esi
mov eax, ecx
mov ecx, dword [esp + 0x24]
nop
mov dword [esp + 4], eax
mov eax, esi
shr eax, 0x18
and eax, 0xf
mov edx, dword [esp + 0xc]
movzx eax, byte [edx + eax]
mov byte [ebx], al
mov eax, esi
shr eax, 0x14
and eax, 0xf
movzx eax, byte [edx + eax]
mov byte [ebx + 1], al
mov eax, esi
shr eax, 0x10
and eax, 0xf
movzx eax, byte [edx + eax]
mov byte [ebx + 2], al
mov eax, esi
mov esi, dword [esp + 0x10]
shld esi, ecx, 0x10
shl ecx, 0x10
shr eax, 0xc
and eax, 0xf
movzx eax, byte [edx + eax]
mov byte [ebx + 3], al
mov eax, dword [esp + 4]
add ebx, 4
mov dword [esp + 0x10], esi
add eax, 0xfffffffc
jne 0x401f30
lea eax, [esp + 0xae]
mov dword [esp + 0xc], eax
mov esi, dword [esp + 8]
mov edx, dword [esp + 0x30]
cmp byte [esp + 0x58], 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x3d], al
test edx, edx
js 0x401fde
mov byte [esp + 0x3e], 0x2b
cmp edx, 0x3e7
ja 0x401fed
cmp edx, 0x63
jbe 0x402108
mov dword [esp + 0x24], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], 5
jmp 0x401ffd
mov byte [esp + 0x3e], 0x2d
neg edx
cmp edx, 0x3e7
jbe 0x401fc3
mov dword [esp + 0x24], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], 6
mov dword [esp + 0x10], 0
mov eax, edx
mov ecx, 0xcccccccd
mov dword [esp + 0x30], edx
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea esi, [edx + edx*4]
mov eax, dword [esp + 0x30]
mov ebx, 0x66666667
imul ebx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
imul ebx
mov ebx, dword [esp + 0x30]
sub ebx, esi
mov esi, dword [esp + 4]
mov eax, esi
mov byte [esp + 0x3c], al
or bl, 0x30
mov byte [esp + esi + 0x3c], bl
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea edx, [edx + edx*4]
mov eax, dword [esp + 0x30]
sub ecx, edx
add cl, 0x30
mov byte [esp + esi + 0x3b], cl
cmp byte [esp + 0x10], 0
mov esi, dword [esp + 8]
mov ebx, dword [esp + 0x24]
jne 0x40283f
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 + 0x3c]
mov edx, dword [esp + 4]
mov byte [edx + eax - 2], cl
mov eax, dword [esp + 0x30]
cmp eax, 0x3e8
jb 0x40283f
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 + 0x3c]
mov edx, dword [esp + 4]
mov byte [edx + eax - 3], cl
jmp 0x40283f
cmp edx, 9
jbe 0x402833
mov dword [esp + 0x24], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], 4
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x402005
cmp edx, eax
jl 0x402132
mov edx, eax
sub edx, ecx
mov esi, edx
jmp 0x40248f
mov edx, ecx
test ebx, 0x100
jne 0x4022ce
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], esi
movzx eax, byte [0x44f001]
xor al, 0x89
mov byte [esp + 0xc], al
mov esi, 0x200
xor edx, edx
mov dword [esp + 0x18], ebx
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x10]
cmp ecx, 0x5f5e100
mov edx, dword [esp + 0x30]
mov eax, edx
sbb eax, 0
jb 0x4021b0
push 0
push 0x5f5e100
push edx
push ecx
mov dword [esp + 0x20], ecx
call fcn.0040cb50
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x10]
imul ecx, eax, 0x5f5e100
sub edx, ecx
mov ecx, eax
jmp 0x4021bc
mov dword [esp + 0x30], 0
mov edx, ecx
xor ecx, ecx
lea eax, [esp + 0x64]
add eax, esi
mov dword [esp + 8], eax
test bl, 0x40
mov dword [esp + 0x10], ecx
jne 0x402210
nop
mov ecx, edx
mov eax, edx
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ebx, eax
movzx eax, word [ebx + ebx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x6a], ax
add esi, 0xfffffffe
cmp ecx, 0x64
jae 0x4021d0
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
jmp 0x402280
mov eax, edx
test edx, edx
mov edx, dword [esp + 0x24]
je 0x402280
mov ecx, dword [esp + 8]
jmp 0x402252
mov dword [esp + 8], ecx
mov ecx, edx
mov ebx, eax
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 + 0x6b], bl
dec esi
mov eax, edx
mov edx, ecx
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x18]
test eax, eax
je 0x402284
test bl, 0x40
je 0x402220
cmp edx, 3
je 0x402263
mov dword [esp + 8], ecx
inc edx
jmp 0x402224
mov edx, eax
movzx eax, byte [esp + 0xc]
mov byte [esp + esi + 0x6b], al
mov eax, edx
dec esi
dec ecx
xor edx, edx
test eax, eax
jne 0x402252
jmp 0x402284
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
or eax, dword [esp + 0x30]
jne 0x4022a7
jmp 0x402346
inc edx
mov byte [esp + esi + 0x6b], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x6c
cmp eax, ecx
je 0x402170
test bl, 0x40
je 0x4022a1
cmp edx, 3
jne 0x4022a0
movzx eax, byte [esp + 0xc]
mov byte [esp + esi + 0x6b], al
dec esi
dec ecx
xor edx, edx
jmp 0x4022a7
mov eax, 1
mov ecx, dword [esp + 4]
cmp ecx, 0xffffffff
je 0x4022de
mov eax, ecx
mov dword [esp + 4], 0
cmp edx, 0x400
mov ecx, esi
sbb ecx, 0
jb 0x4022f7
mov dword [esp + 4], eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], esi
fild qword [esp + 0x60]
xor eax, eax
test ebx, 0x800
sete al
fld qword [eax*8 + 0x44c550]
cmp ebx, 0x3ffffff
ja 0x40233f
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x4023ce
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x4023ce
fstp st(0)
fstp st(0)
jmp 0x402448
cmp byte [esp + esi + 0x6c], 0x30
sete al
cmp esi, 0x200
setne cl
mov byte [esp + 0x3c], 0
mov byte [esp + 0x44], 0
mov dl, 0x2d
test bl, bl
js 0x402375
mov dl, 0x20
test bl, 4
jne 0x402375
mov dl, 0x2b
test bl, 2
je 0x40237e
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], dl
and cl, al
movzx eax, cl
add esi, eax
lea edx, [esp + esi]
add edx, 0x6c
lea ecx, [esi - 0x200]
neg ecx
mov dword [esp + 0x28], ecx
cmp esi, 0x200
jne 0x4023b1
mov byte [edx - 1], 0x30
dec edx
mov dword [esp + 0x28], 1
mov ecx, 1
mov eax, dword [esp + 4]
xor esi, esi
test eax, eax
jg 0x4023bd
xor eax, eax
add ecx, 0x3000000
mov dword [esp + 0x10], ecx
mov ecx, edx
jmp 0x402b77
fdiv st(2), st(0)
lea ecx, [ebx + 0x1000000]
cmp ebx, 0x2ffffff
ja 0x402442
fucom st(2)
fnstsw ax
sahf
jbe 0x4023f0
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402442
fdiv st(2), st(0)
lea ecx, [ebx + 0x2000000]
cmp ebx, 0x1ffffff
ja 0x402442
fucom st(2)
fnstsw ax
sahf
jbe 0x402412
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402442
fdiv st(2), st(0)
lea ecx, [ebx + 0x3000000]
cmp ebx, 0xffffff
ja 0x402442
fucom st(2)
fnstsw ax
sahf
jbe 0x40377c
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x40377c
fstp st(0)
fstp st(0)
mov ebx, ecx
mov esi, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x402458
mov esi, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x50]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
mov dword [esp + 0x10], esi
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x40]
call fcn.004037e0
add esp, 0x18
test eax, eax
je 0x40248f
or ebx, 0x80
mov byte [esp + 0x3c], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
test bl, bl
js 0x4024ad
mov al, 0x20
test bl, 4
jne 0x4024ad
mov al, 0x2b
test bl, 2
je 0x4024b6
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x38]
cmp ecx, 0x7000
jne 0x4024d3
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x14]
jmp 0x402b73
test ecx, ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 8], esi
jle 0x40257a
mov dword [esp + 4], 0
test bl, 0x40
je 0x40250b
mov esi, 0x258
sub esi, ecx
mov eax, esi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
sub esi, eax
mov dword [esp + 4], esi
cmp ecx, dword [esp + 0x28]
jae 0x402658
xor eax, eax
lea ecx, [esp + 0xac]
mov dword [esp + 0x10], ecx
jmp 0x40254a
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + eax]
lea esi, [ecx + 1]
mov dword [esp + 0x10], esi
mov byte [ecx], dl
inc eax
mov edx, dword [esp + 0x38]
cmp eax, edx
jae 0x4026ba
test bl, 0x40
je 0x402528
mov ecx, dword [esp + 4]
inc ecx
cmp ecx, 4
jne 0x402524
mov ecx, ebx
and ecx, 0x40
shr ecx, 6
mov dword [esp + 4], ecx
movzx ecx, byte [0x44f001]
xor cl, 0x89
mov edx, dword [esp + 0x10]
mov byte [edx], cl
inc edx
mov ecx, edx
jmp 0x40252c
mov byte [esp + 0xac], 0x30
lea edx, [esp + 0xad]
test esi, esi
je 0x4025ad
movzx eax, byte [section..data]
mov edx, eax
add dl, al
and dl, 0x48
sub al, dl
add al, 0xa4
mov byte [esp + 0xad], al
lea edx, [esp + 0xae]
neg ecx
mov eax, esi
cmp esi, ecx
jl 0x4025b7
mov esi, ecx
test esi, esi
mov dword [esp + 0xc], esi
je 0x4025f4
mov eax, edx
and eax, 3
je 0x4025f4
mov ebx, edx
not ebx
and ebx, 3
dec esi
cmp ebx, esi
jb 0x4025d4
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
push edx
mov dword [esp + 0x10], edx
call fcn.0040ccf0
mov edx, dword [esp + 0x10]
add esp, 0xc
add edx, ebx
inc edx
sub esi, ebx
mov ebx, dword [esp + 0x18]
cmp esi, 4
jl 0x402635
mov eax, esi
cmp esi, 7
jl 0x402605
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push edx
mov dword [esp + 0x10], edx
call fcn.0040ccf0
mov edx, dword [esp + 0x10]
add esp, 0xc
add edx, ebx
add edx, 4
sub esi, ebx
add esi, 0xfffffffc
mov ebx, dword [esp + 0x18]
test esi, esi
je 0x402878
push esi
push 0x30
push edx
mov dword [esp + 0x10], edx
call fcn.0040ccf0
add esp, 0xc
mov eax, dword [esp + 4]
add eax, esi
jmp 0x40287a
xor eax, eax
mov ebx, 0xffffffff
mov esi, 1
lea edx, [esp + 0xac]
jmp 0x4026a3
mov ecx, dword [esp + 0x18]
and ecx, 0x40
shr ecx, 6
mov dword [esp + 4], ecx
movzx ecx, byte [0x44f001]
xor cl, 0x89
mov byte [edx], cl
inc edx
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + esi - 1]
mov byte [edx], cl
mov ecx, edx
inc edx
inc eax
dec ebx
inc esi
cmp eax, dword [esp + 0x28]
jae 0x40275a
test byte [esp + 0x18], 0x40
je 0x402688
mov ecx, dword [esp + 4]
inc ecx
cmp ecx, 4
je 0x40266d
mov dword [esp + 4], ecx
jmp 0x402688
mov esi, dword [esp + 0x10]
mov dword [esp + 4], esi
cmp dword [esp + 8], 0
je 0x4026ec
movzx edx, byte [section..data]
mov dh, dl
or dh, 0x5b
not dl
or dl, 0xa4
and dl, dh
not dl
mov byte [ecx + 1], dl
add ecx, 2
mov edx, dword [esp + 0x38]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x28]
mov esi, ecx
sub esi, edx
cmp esi, dword [esp + 8]
mov esi, dword [esp + 8]
jbe 0x402705
lea ecx, [edx + esi]
mov dword [esp + 0x28], ecx
cmp eax, ecx
jae 0x40272c
mov edx, dword [esp + 4]
nop
nop
nop
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + eax]
mov byte [edx], cl
inc edx
inc eax
mov ecx, dword [esp + 0x28]
cmp eax, ecx
jb 0x402710
mov dword [esp + 4], edx
mov edx, dword [esp + 0x38]
sub ecx, edx
lea eax, [esp + 0xac]
mov edx, dword [esp + 0x10]
sub edx, eax
add edx, 0x3000000
mov eax, ecx
xor eax, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, eax
mov esi, ecx
mov ecx, edx
mov edx, dword [esp + 4]
jmp 0x40295b
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x10], ecx
sub ecx, eax
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 4]
jbe 0x402801
test byte [esp + 0x18], 0x40
jne 0x402a2f
cmp dword [esp + 0x10], eax
je 0x402ac9
mov eax, edx
and eax, 3
je 0x402ac9
mov ecx, 2
sub ecx, dword [esp + 0x30]
and ecx, 3
mov eax, dword [esp + 0x10]
sub eax, esi
mov dword [esp + 0xc], ecx
mov dword [esp + 0x24], ecx
cmp ecx, eax
mov ecx, dword [esp + 0xc]
jb 0x4027ba
mov ecx, eax
mov dword [esp + 0xc], ecx
lea eax, [ecx + 1]
push eax
push 0x30
push edx
call fcn.0040ccf0
add esp, 0xc
add ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
cmp ebx, eax
jb 0x4027db
mov ebx, eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0xc]
lea edx, [eax + ecx]
add edx, 2
mov eax, dword [esp + 0x10]
sub eax, ebx
sub eax, esi
mov ecx, dword [esp + 4]
jmp 0x402acd
mov esi, ecx
jmp 0x402a4a
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 8]
mov ecx, edx
lea eax, [esp + 0xac]
sub ecx, eax
add ecx, 0x3000000
test esi, esi
je 0x4028e8
movzx eax, byte [section..data]
xor al, 0xa4
mov byte [edx], al
inc edx
jmp 0x40295b
mov byte [esp + 0x3c], 3
or dl, 0x30
mov byte [esp + 0x3f], dl
add dword [esp + 0x2c], 8
mov eax, ebx
sub eax, dword [esp + 0xc]
mov dword [esp + 0x38], eax
mov eax, ebx
not eax
lea ecx, [esp + 0xac]
and eax, ecx
and ebx, dword [esp + 0x5c]
sub ebx, eax
mov dword [esp + 0x28], ebx
xor eax, eax
mov dword [esp + 0x10], 0x3000001
mov ebx, dword [esp + 0x18]
jmp 0x402b77
mov eax, edx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0xc]
add ecx, edx
mov esi, dword [esp + 8]
cmp ecx, esi
jle 0x402896
mov edx, esi
sub edx, dword [esp + 0xc]
mov dword [esp + 0x28], edx
mov dword [esp + 4], edx
test edx, edx
je 0x402946
mov edx, esi
cmp esi, ecx
jl 0x4028aa
mov edx, ecx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 4]
mov ecx, edx
and ecx, 3
je 0x4028ec
xor esi, esi
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x14]
lea edx, [ebx + 1]
mov dword [esp + 0x14], edx
movzx edx, byte [ebx]
mov byte [eax + esi], dl
inc esi
cmp ecx, esi
jne 0x4028c0
mov edx, eax
add edx, esi
mov eax, edx
mov ecx, dword [esp + 4]
sub ecx, esi
mov ebx, dword [esp + 0x18]
jmp 0x4028ee
xor esi, esi
jmp 0x40295b
mov ecx, edx
mov edx, dword [esp + 0xc]
sub edx, dword [esp + 0x10]
cmp edx, 0xfffffffc
ja 0x402946
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax], dl
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax + 2], dl
mov edx, dword [esp + 0x14]
lea esi, [edx + 1]
mov dword [esp + 0x14], esi
movzx edx, byte [edx]
mov byte [eax + 3], dl
add eax, 4
add ecx, 0xfffffffc
jne 0x4028fb
mov ecx, dword [esp + 0xc]
add ecx, dword [esp + 4]
mov esi, dword [esp + 8]
sub esi, ecx
mov ecx, 0x3000001
mov edx, eax
mov dword [esp + 0x10], ecx
test ebx, 0x100
je 0x402a14
mov eax, ebx
and eax, 0x400
sete byte [esp + 0x3c]
mov byte [esp + 0x3d], 0x20
cmp ebx, 0x1000000
jb 0x402a14
mov dword [esp + 4], edx
mov ecx, ebx
shr ecx, 0x18
mov edx, ebx
xor edx, 0xfffff7ff
or ebx, 0x800
test ebx, edx
je 0x4029eb
mov dword [esp + 8], esi
movzx ecx, byte [ecx + str._KMGT]
mov ebx, dword [esp + 0x18]
mov edx, ebx
shl edx, 0x15
sar edx, 0x1f
lea esi, [esp + 0x3c]
mov byte [edx + esi + 2], cl
cmp eax, 1
mov ecx, 0
adc cl, 1
test ebx, 0x1000
jne 0x4029e5
test eax, eax
movzx eax, cl
sete cl
mov byte [eax + esi + 1], 0x69
or cl, 2
mov esi, dword [esp + 8]
jmp 0x402a08
movzx ecx, byte [ecx + str._kMGT]
mov edx, eax
shr edx, 0xa
neg edx
mov byte [esp + edx + 0x3e], cl
cmp eax, 1
mov ecx, 0
adc cl, 1
mov edx, dword [esp + 4]
mov byte [esp + 0x3c], cl
mov ebx, dword [esp + 0x18]
lea eax, [esp + 0xac]
sub edx, eax
mov dword [esp + 0x28], edx
mov ecx, eax
jmp 0x402b75
mov edx, ecx
jmp 0x402b3e
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 8]
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x402b16
jmp 0x402809
mov edx, eax
mov dword [esp + 8], edx
mov dword [esp + 4], esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp edx, 4
mov dword [esp + 0x18], edx
jb 0x402a8d
mov ecx, dword [esi]
mov edx, ecx
not edx
add ecx, 0xfefefeff
and ecx, edx
mov edx, eax
mov eax, esi
add esi, 4
add edx, 0xfffffffc
test ecx, 0x80808080
je 0x402a60
jmp 0x402a93
test eax, eax
mov eax, esi
je 0x402ac1
mov edx, eax
mov esi, dword [esp + 4]
add esi, dword [esp + 8]
xor ecx, ecx
mov eax, dword [esp + 0x18]
cmp byte [edx + ecx], 0
je 0x402ab0
inc ecx
cmp eax, ecx
jne 0x402aa3
jmp 0x402ab4
mov esi, edx
add esi, ecx
mov edx, dword [esp + 0xc]
mov ecx, edx
sub esi, edx
jmp 0x402b50
mov edx, dword [esp + 0xc]
mov esi, eax
jmp 0x402ab8
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x402af8
mov esi, eax
and esi, 0xfffffffc
push esi
push 0x30
push edx
mov ebx, edx
mov dword [esp + 0x18], eax
call fcn.0040ccf0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, ebx
add esp, 0xc
add edx, esi
and eax, 3
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 8]
test eax, eax
jne 0x402b16
jmp 0x402809
mov byte [edx], 0x30
dec eax
inc edx
test eax, eax
je 0x402809
test bl, 0x40
je 0x402b09
inc ecx
cmp ecx, 4
jne 0x402b09
mov ecx, eax
movzx eax, byte [0x44f001]
xor al, 0x89
mov byte [edx], al
mov eax, ecx
xor ecx, ecx
inc edx
test eax, eax
jne 0x402b16
jmp 0x402809
mov edx, esi
mov eax, edx
mov ecx, dword [esp + 0xc]
xor eax, ecx
mov esi, ecx
not esi
and esi, edx
add esi, esi
sub esi, eax
add dword [esp + 0x2c], 4
mov dword [esp + 0x28], esi
mov byte [esp + 0x44], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x10], 0
xor esi, esi
xor eax, eax
mov dword [esp + 0xc], ecx
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x28]
cmp eax, ecx
jg 0x402b89
mov eax, ecx
mov dword [esp + 0x1c], ecx
mov ecx, eax
movsx eax, byte [esp + 0x44]
mov edx, ecx
xor edx, eax
movsx esi, byte [esp + 0x3c]
add esi, dword [esp + 8]
add esi, edx
mov dword [esp + 4], ecx
and ecx, eax
lea edx, [esi + ecx*2]
mov esi, dword [esp + 0x34]
cmp esi, edx
jg 0x402bb6
mov esi, edx
sub esi, edx
mov dword [esp + 0x34], esi
mov ecx, dword [esp + 0x1c]
sub dword [esp + 4], ecx
test bl, 1
mov esi, dword [esp + 0x20]
jne 0x402bf0
test bl, 0x10
jne 0x402bd6
xor ebx, ebx
jmp 0x402bf0
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 4]
cmp ecx, edx
jg 0x402be4
mov ecx, edx
mov dword [esp + 4], ecx
mov dword [esp + 0x34], 0
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x34]
add ecx, dword [esp + 4]
mov dword [esp + 0x18], ebx
je 0x4030a2
test bl, 1
jne 0x402d36
cmp dword [esp + 0x34], 0
jle 0x402d36
mov edx, dword [esp + 0x34]
jmp 0x402c30
mov edx, dword [esp + 0x34]
sub edx, dword [esp + 0x1c]
test edx, edx
jle 0x402d2d
mov ecx, esi
sub ecx, edi
add ecx, 0x200
mov eax, edx
mov dword [esp + 0x34], edx
cmp edx, ecx
jl 0x402c46
mov eax, ecx
mov ecx, dword [esp + 0x34]
cmp dword [ebp + 8], 0
je 0x402c52
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], esi
je 0x402c93
mov eax, edi
and eax, 3
je 0x402c93
mov esi, edi
not esi
and esi, 3
lea ebx, [ecx - 1]
cmp esi, ebx
jb 0x402c75
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x20
push edi
call fcn.0040ccf0
mov ecx, ebx
add esp, 0xc
add edi, esi
inc edi
sub ecx, esi
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
cmp ecx, 4
jl 0x402cd4
mov eax, ecx
cmp ecx, 7
jl 0x402ca4
mov eax, 7
neg eax
lea esi, [ecx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
push edi
mov ebx, ecx
call fcn.0040ccf0
mov ecx, ebx
add esp, 0xc
add edi, esi
add edi, 4
sub ecx, esi
add ecx, 0xfffffffc
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
test ecx, ecx
je 0x402cf0
push ecx
push 0x20
push edi
mov esi, ebx
mov ebx, ecx
call fcn.0040ccf0
add esp, 0xc
add edi, ebx
mov ebx, esi
mov esi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
je 0x402c20
mov eax, edi
sub eax, esi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402c20
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov edi, eax
mov esi, eax
jmp 0x402c20
mov dword [esp + 0x34], edx
movzx eax, byte [esp + 0x44]
lea ecx, [esp + 0x45]
mov dword [esp + 0x14], ecx
jmp 0x402d49
mov edi, eax
mov esi, eax
movzx eax, byte [esp + 0x44]
test al, al
je 0x402e78
movsx ecx, al
mov edx, esi
sub edx, edi
add edx, 0x200
cmp edx, ecx
jl 0x402d64
mov edx, ecx
mov ebx, esi
mov eax, ecx
cmp dword [ebp + 8], 0
je 0x402d70
mov eax, edx
mov esi, eax
xor esi, ecx
mov edx, eax
not edx
and edx, ecx
add edx, edx
sub edx, esi
mov byte [esp + 0x44], dl
test eax, eax
je 0x402dd0
mov ecx, eax
and ecx, 3
je 0x402de0
mov dword [esp + 0x1c], eax
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x14]
lea eax, [esi + 1]
mov dword [esp + 0x14], eax
movzx eax, byte [esi]
mov byte [edi + edx], al
inc edx
cmp ecx, edx
jne 0x402da0
add edi, edx
mov eax, dword [esp + 0x1c]
mov ecx, eax
sub ecx, edx
jmp 0x402de2
mov esi, ebx
jmp 0x402e3b
mov ecx, eax
cmp eax, 4
mov esi, ebx
jb 0x402e3b
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x402df0
cmp dword [ebp + 8], 0
mov ebx, dword [esp + 0x18]
je 0x402d44
mov eax, edi
sub eax, esi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402d44
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402d40
jmp 0x4037bc
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x10]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x1c], ecx
mov ecx, ebx
xor esi, esi
test cl, 0x40
je 0x402eb3
and eax, 0xffffff
mov edx, eax
mov ecx, dword [esp + 4]
mov eax, ecx
xor eax, edx
and edx, ecx
lea eax, [eax + edx*2]
mov esi, dword [esp + 0x1c]
lea ecx, [esi + 1]
xor edx, edx
div ecx
sub esi, edx
mov edx, dword [esp + 4]
test edx, edx
jg 0x402ee0
lea eax, [esp + 0x45]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0xc]
jmp 0x4031d1
mov edx, dword [esp + 4]
sub edx, dword [esp + 0x10]
test edx, edx
jle 0x403095
mov ecx, dword [esp + 0x20]
sub ecx, edi
add ecx, 0x200
mov eax, edx
mov dword [esp + 4], edx
cmp edx, ecx
jl 0x402ef8
mov eax, ecx
mov ecx, dword [esp + 4]
cmp dword [ebp + 8], 0
je 0x402f04
mov ecx, eax
mov eax, ebx
test al, 0x40
mov dword [esp + 0x10], ecx
jne 0x402f50
test ecx, ecx
je 0x402f60
mov eax, edi
and eax, 3
je 0x402f60
mov eax, edi
not eax
and eax, 3
dec ecx
cmp eax, ecx
jb 0x402f27
mov eax, ecx
mov dword [esp + 0x24], eax
inc eax
push eax
push 0x30
push edi
mov dword [esp + 0x3c], ecx
call fcn.0040ccf0
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov eax, dword [esp + 0x24]
add edi, eax
inc edi
sub edx, eax
cmp edx, 4
jge 0x402f67
jmp 0x402fa6
mov edx, ecx
jmp 0x402fa6
mov edx, ecx
cmp edx, 4
jl 0x402fa6
mov eax, edx
cmp edx, 7
jl 0x402f73
mov eax, 7
neg eax
add eax, edx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x24], eax
add eax, 4
push eax
push 0x30
push edi
mov dword [esp + 0x3c], edx
call fcn.0040ccf0
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov eax, dword [esp + 0x24]
add edi, eax
add edi, 4
sub edx, eax
add edx, 0xfffffffc
test edx, edx
je 0x402ff0
test dl, 1
jne 0x402fc0
mov eax, edx
cmp edx, 1
jne 0x403057
jmp 0x402ff0
mov al, 0x30
mov ecx, ebx
test cl, 0x40
je 0x402fdd
cmp esi, dword [esp + 0x1c]
jne 0x402fdc
movzx eax, byte [0x44f001]
xor al, 0x89
xor esi, esi
jmp 0x402fdd
inc esi
mov byte [edi], al
inc edi
lea eax, [edx - 1]
cmp edx, 1
jne 0x403057
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402ed0
mov eax, edi
mov edx, dword [esp + 0x20]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402ed0
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov edi, eax
mov dword [esp + 0x20], eax
jmp 0x402ed0
movzx ecx, byte [0x44f001]
xor cl, 0x89
xor esi, esi
mov byte [edi + 1], cl
add edi, 2
add eax, 0xfffffffe
je 0x402ff0
mov cl, 0x30
mov edx, ebx
test dl, 0x40
je 0x403081
cmp esi, dword [esp + 0x1c]
jne 0x403080
movzx edx, byte [0x44f001]
xor dl, 0x89
xor esi, esi
jmp 0x403083
inc esi
mov dl, 0x30
mov byte [edi], dl
mov edx, ebx
test dl, 0x40
je 0x40304c
cmp esi, dword [esp + 0x1c]
je 0x403040
inc esi
jmp 0x40304c
movzx eax, byte [esp + 0x44]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x45]
mov dword [esp + 0x14], ecx
jmp 0x4030bd
mov edi, eax
mov esi, eax
mov edx, dword [esp + 0xc]
movzx eax, byte [esp + 0x44]
test al, al
je 0x4031cd
movsx ecx, al
mov edx, esi
sub edx, edi
add edx, 0x200
cmp edx, ecx
jl 0x4030d8
mov edx, ecx
cmp dword [ebp + 8], 0
je 0x4030e0
mov ecx, edx
sub al, cl
mov byte [esp + 0x44], al
test ecx, ecx
je 0x40318b
mov eax, ecx
and eax, 3
je 0x4031c0
mov ebx, ecx
mov dword [esp + 0x20], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x14]
lea ecx, [esi + 1]
mov dword [esp + 0x14], ecx
movzx ecx, byte [esi]
mov byte [edi + edx], cl
inc edx
cmp eax, edx
jne 0x403110
add edi, edx
mov ecx, ebx
mov eax, ebx
sub eax, edx
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
cmp ecx, 4
jb 0x40318b
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [edi + 3], cl
add edi, 4
add eax, 0xfffffffc
jne 0x403140
cmp dword [ebp + 8], 0
je 0x4030b4
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x4030b4
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x4030b0
jmp 0x4037bc
mov eax, ecx
cmp ecx, 4
jae 0x403140
jmp 0x40318b
mov dword [esp + 0x20], esi
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x403464
mov eax, dword [esp + 8]
test eax, eax
mov esi, dword [esp + 0x20]
jne 0x403338
lea eax, [esp + 0x3d]
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + 0x3c]
test cl, cl
je 0x40361d
movsx eax, cl
mov edx, esi
sub edx, edi
add edx, 0x200
cmp edx, eax
jl 0x403220
mov edx, eax
cmp dword [ebp + 8], 0
je 0x403228
mov eax, edx
sub cl, al
mov byte [esp + 0x3c], cl
test eax, eax
je 0x4032cb
mov ecx, eax
and ecx, 3
je 0x403310
mov dword [esp + 0x20], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x14]
lea ebx, [esi + 1]
mov dword [esp + 0x14], ebx
movzx ebx, byte [esi]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403250
add edi, edx
mov ecx, eax
sub ecx, edx
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
cmp eax, 4
jb 0x4032cb
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x403280
cmp dword [ebp + 8], 0
je 0x403200
mov eax, edi
sub eax, esi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403200
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov edi, eax
mov esi, eax
jmp 0x403200
mov ecx, eax
cmp eax, 4
jae 0x403280
jmp 0x4032cb
mov ecx, dword [esp + 8]
mov eax, ecx
not eax
and eax, edx
not edx
and edx, ecx
sub edx, eax
mov eax, edx
je 0x4031ed
mov dword [esp + 8], eax
mov edx, eax
cmp dword [ebp + 8], 0
je 0x403359
mov eax, esi
sub eax, edi
add eax, 0x200
mov ecx, dword [esp + 8]
mov edx, ecx
cmp ecx, eax
jl 0x403359
mov edx, eax
test edx, edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], esi
je 0x4033a0
mov eax, edi
and eax, 3
je 0x4033a0
mov ebx, edi
not ebx
and ebx, 3
lea esi, [edx - 1]
cmp ebx, esi
jb 0x40337c
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
push edi
call fcn.0040ccf0
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
cmp esi, 4
jge 0x4033a7
jmp 0x4033df
mov esi, edx
cmp esi, 4
jl 0x4033df
mov eax, esi
cmp esi, 7
jl 0x4033b3
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push edi
call fcn.0040ccf0
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
test esi, esi
je 0x4033f5
push esi
push 0x30
push edi
call fcn.0040ccf0
mov edx, dword [esp + 0x28]
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
je 0x403320
mov ecx, edi
not ecx
and ecx, esi
mov eax, esi
not eax
and eax, edi
sub eax, ecx
cmp eax, 0x1ff
jl 0x403320
mov ecx, eax
mov edx, dword [esp + 0x4c]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x4c], edx
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov edi, eax
mov esi, eax
mov edx, dword [esp + 0x1c]
jmp 0x403320
mov edx, ebx
mov ebx, esi
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
sub ecx, esi
je 0x4031dd
mov esi, ecx
cmp dword [ebp + 8], 0
je 0x40347f
mov eax, dword [esp + 0x20]
sub eax, edi
add eax, 0x200
mov esi, ecx
cmp ecx, eax
jl 0x40347f
mov esi, eax
cmp esi, 4
mov dword [esp + 0x1c], esi
mov dword [esp + 4], ecx
jl 0x4034e0
lea eax, [esi - 4]
mov dword [esp + 0xc], eax
shr eax, 2
inc eax
and eax, 7
je 0x4034e4
shl eax, 2
mov ebx, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebx + edx]
mov dword [edi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x4034b0
add edi, edx
mov esi, dword [esp + 0x1c]
mov ecx, esi
sub ecx, edx
add ebx, edx
mov eax, ecx
mov edx, ebx
mov ebx, dword [esp + 0x18]
cmp dword [esp + 0xc], 0x1c
jae 0x4034f0
jmp 0x403531
mov eax, esi
jmp 0x403531
mov ecx, esi
cmp dword [esp + 0xc], 0x1c
jb 0x403531
nop
nop
nop
mov eax, dword [edx]
mov dword [edi], eax
mov eax, dword [edx + 4]
mov dword [edi + 4], eax
mov eax, dword [edx + 8]
mov dword [edi + 8], eax
mov eax, dword [edx + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [edx + 0x18]
mov dword [edi + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [edi + 0x1c], eax
add edi, 0x20
add edx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x4034f0
test eax, eax
je 0x4035c1
mov ecx, eax
and ecx, 7
je 0x403610
mov esi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esi + edx]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403550
add edi, edx
mov ecx, eax
sub ecx, edx
add esi, edx
mov ebx, dword [esp + 0x18]
mov edx, esi
mov esi, dword [esp + 0x1c]
cmp eax, 8
jb 0x4035c1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edx]
mov byte [edi], al
movzx eax, byte [edx + 1]
mov byte [edi + 1], al
movzx eax, byte [edx + 2]
mov byte [edi + 2], al
movzx eax, byte [edx + 3]
mov byte [edi + 3], al
movzx eax, byte [edx + 4]
mov byte [edi + 4], al
movzx eax, byte [edx + 5]
mov byte [edi + 5], al
movzx eax, byte [edx + 6]
mov byte [edi + 6], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [edi + 7], al
add edi, 8
add ecx, 0xfffffff8
jne 0x403580
cmp dword [ebp + 8], 0
je 0x403458
mov esi, ebx
mov ebx, edx
mov eax, edi
mov edx, dword [esp + 0x20]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403450
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov edi, eax
mov dword [esp + 0x20], eax
jmp 0x403450
mov ecx, eax
cmp eax, 8
jae 0x403580
jmp 0x4035c1
test bl, 1
je 0x40376e
cmp dword [esp + 0x34], 0
mov eax, dword [esp + 0x50]
jle 0x403772
mov ecx, dword [esp + 0x34]
jne 0x403650
jmp 0x403772
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
sub ecx, ebx
je 0x403772
mov dword [esp + 0x34], ecx
mov ebx, ecx
cmp dword [ebp + 8], 0
je 0x403681
mov ecx, edi
sub ecx, esi
mov eax, ecx
not eax
and ecx, 0xfffffdff
and eax, 0x200
sub eax, ecx
mov ecx, dword [esp + 0x34]
mov ebx, ecx
cmp ecx, eax
jl 0x40367d
mov ebx, eax
mov eax, dword [esp + 0x50]
test ebx, ebx
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], ebx
je 0x4036e0
mov eax, edi
and eax, 3
je 0x4036d0
mov eax, ebx
mov ebx, edi
not ebx
and ebx, 3
lea esi, [eax - 1]
cmp ebx, esi
jb 0x4036a6
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x20
push edi
call fcn.0040ccf0
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x1c]
cmp esi, 4
jge 0x4036e7
jmp 0x40371f
mov esi, ebx
mov eax, dword [esp + 0x50]
cmp esi, 4
jge 0x4036e7
jmp 0x40371f
mov esi, ebx
cmp esi, 4
jl 0x40371f
mov eax, esi
cmp esi, 7
jl 0x4036f3
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x20
push edi
call fcn.0040ccf0
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x1c]
test esi, esi
je 0x403735
push esi
push 0x20
push edi
call fcn.0040ccf0
mov eax, dword [esp + 0x5c]
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
je 0x403644
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x403640
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4037bc
mov edi, eax
mov esi, eax
jmp 0x403640
mov eax, dword [esp + 0x50]
mov dword [esp + 0x1c], edi
inc eax
jmp 0x401052
fstp st(1)
fdivp st(1)
or ebx, 0x4000000
jmp 0x402448
mov edx, dword [esp + 8]
jmp 0x402a4a
test esi, esi
je 0x4037c2
mov edx, dword [esp + 0x1c]
mov eax, edx
mov ecx, dword [esp + 0x20]
sub eax, ecx
test eax, eax
jle 0x4037cd
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push ecx
call esi
add esp, 0xc
mov edx, eax
mov ecx, eax
jmp 0x4037cd
xor edx, edx
xor ecx, ecx
jmp 0x4037cd
mov edx, dword [esp + 0x1c]
mov byte [edx], 0
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
add eax, edx
sub eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret