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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x268
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x28], eax
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov dword [esp + 0x48], 0
mov dword [esp + 0x24], esi
jmp 0x40103d
mov esi, edi
mov ebx, dword [esp + 0x4c]
mov edi, dword [ebp + 8]
mov byte [esi], al
inc esi
inc ebx
mov eax, ebx
test al, 3
mov dword [esp + 0x1c], esi
je 0x401050
movzx eax, byte [ebx]
jmp 0x40106e
mov eax, dword [ebx]
mov ecx, eax
not ecx
mov edx, eax
xor edx, 0x25252525
add edx, 0xfefefeff
and edx, ecx
test edx, 0x80808080
je 0x4010d6
cmp al, 0x25
je 0x401150
mov esi, dword [esp + 0x1c]
test al, al
je 0x403668
test edi, edi
je 0x401039
mov dword [esp + 0x4c], ebx
mov edi, esi
mov ecx, esi
mov ebx, dword [esp + 0x24]
sub ecx, ebx
mov edx, ecx
and edx, 1
mov esi, ecx
xor esi, 1
lea edx, [esi + edx*2]
cmp edx, 0x200
jl 0x401030
add dword [esp + 0x48], ecx
push ecx
push dword [ebp + 0xc]
push ebx
mov edi, dword [ebp + 8]
call edi
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov eax, dword [esp + 0x4c]
mov ebx, eax
movzx eax, byte [eax]
mov dword [esp + 0x24], esi
jmp 0x401039
mov ecx, dword [esp + 0x24]
sub ecx, esi
add ecx, 0x200
jmp 0x401127
mov dword [esi], eax
mov eax, dword [ebx + 4]
mov edx, eax
not edx
mov edi, esi
mov esi, eax
xor esi, 0x25252525
add esi, 0xfefefeff
and esi, edx
add edi, 4
mov dword [esp + 0x1c], edi
mov edi, dword [ebp + 8]
add ebx, 4
add ecx, 0xfffffffc
test esi, 0x80808080
jne 0x40106e
mov edx, 0x1010100
sub edx, eax
or edx, eax
not edx
test edx, 0x80808080
jne 0x401076
test edi, edi
mov esi, dword [esp + 0x1c]
je 0x4010f0
cmp ecx, 4
jge 0x4010f0
jmp 0x40106e
mov ecx, ebx
add ecx, 2
xor ebx, ebx
jmp 0x401163
mov edx, 1
nop
nop
or ebx, edx
inc ecx
movzx eax, byte [ecx - 1]
lea esi, [eax - 0x20]
cmp esi, 0x3f
ja case.0x401174.33
mov edx, 2
jmp dword [esi*4 + 0x446564]
mov edx, 4
jmp case.0x401174.43
mov edx, 0x400
jmp case.0x401174.43
mov edx, 0x100
test ebx, 0x100
je case.0x401174.43
mov edx, 0x900
test ebx, 0x800
je case.0x401174.43
mov edx, 0x1000
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 0x4011c1
dec ecx
cmp al, 0x2a
mov esi, dword [esp + 0x1c]
jne 0x4011dd
mov eax, dword [esp + 0x28]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x40120b
mov edx, eax
add dl, 0xd0
xor edi, edi
cmp dl, 9
ja 0x40120b
xor edi, edi
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [edi + edi*4]
lea edi, [eax + edx*2]
add edi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x4011f0
mov dword [esp + 0x10], 0xffffffff
cmp al, 0x2e
mov dword [esp + 0x30], edi
jne 0x4012a0
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x401241
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 0x10], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x4012a0
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x10], 0
cmp dl, 9
ja 0x4012a0
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, esi
and edi, 0xa
mov edx, esi
or esi, 0xa
imul esi, edi
xor edi, 0xa
and edx, 0xfffffff5
imul edx, edi
movzx eax, al
add esi, eax
add esi, edx
mov eax, esi
xor eax, 0x30
and esi, 0xffffffcf
add esi, esi
sub esi, eax
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401260
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x1c]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012ab.74
jmp dword [eax*4 + 0x446664]
mov dword [esp + 8], ebx
inc ecx
mov edi, dword [ebp + 8]
jmp 0x40134f
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x401321
or ebx, 0x20
mov dword [esp + 8], ebx
jmp 0x401319
mov dword [esp + 8], ebx
lea eax, [ecx + 1]
mov dword [esp + 0x4c], eax
movzx ebx, byte [ecx + 1]
cmp ebx, 0x33
je 0x40133d
cmp ebx, 0x36
mov edi, dword [ebp + 8]
jne 0x401356
cmp byte [ecx + 2], 0x34
jne 0x401346
add ecx, 3
or dword [esp + 8], 0x20
jmp 0x40134f
mov dword [esp + 8], ebx
mov edi, dword [ebp + 8]
jmp 0x40134f
or ebx, 0x200
mov dword [esp + 8], ebx
movzx ebx, byte [ecx + 1]
cmp bl, 0x68
jne 0x401333
add ecx, 2
mov edi, dword [ebp + 8]
jmp 0x40134f
mov eax, edx
mov dword [esp + 8], ebx
inc ecx
mov dword [esp + 0x4c], ecx
mov edi, dword [ebp + 8]
mov ebx, edx
jmp 0x401356
inc ecx
mov dword [esp + 0x4c], ecx
mov edi, dword [ebp + 8]
jmp 0x401356
cmp byte [ecx + 2], 0x32
mov edi, dword [ebp + 8]
je 0x40134c
mov ecx, dword [esp + 0x4c]
jmp 0x40134f
add ecx, 3
movzx ebx, byte [ecx]
mov dword [esp + 0x4c], ecx
movzx eax, bl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x401365.67
jmp dword [eax*4 + 0x44672c]
test byte [esp + 8], 0x20
jne 0x4017a7
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
cmp bl, 0x75
je 0x402033
test ecx, ecx
mov esi, dword [esp + 0x10]
jns 0x40201f
neg ecx
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 8]
or edx, 0x80
jmp 0x40203f
mov eax, str.0123456789ABCDEFXP
cmp bl, 0x45
je 0x4013bd
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
je 0x4013d7
mov eax, ecx
mov esi, eax
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x54]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
lea ecx, [esp + 0x24]
lea edx, [esp + 0x38]
call fcn.004036c0
add esp, 0x18
test eax, eax
je 0x401414
or dword [esp + 8], 0x80
add dword [esp + 0x28], 8
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
cmp byte [esp + 8], 0
js 0x40143e
mov al, 0x20
test byte [esp + 8], 4
jne 0x40143e
mov al, 0x2b
test byte [esp + 8], 2
je 0x401447
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0xc]
cmp ecx, 0x7000
mov dword [esp + 4], eax
je 0x402a4b
mov dword [esp + 0x14], ecx
movzx ecx, byte [eax]
mov byte [esp + 0xa4], cl
lea ebx, [esp + 0xa5]
mov edi, esi
test esi, esi
je 0x40149a
movzx ecx, byte [section..data]
xor cl, 0x19
mov byte [esp + 0xa5], cl
lea ebx, [esp + 0xa6]
mov eax, dword [esp + 0x20]
lea edx, [eax - 1]
cmp edx, edi
jbe 0x4014ac
lea eax, [edi + 1]
mov dword [esp + 0x20], eax
cmp eax, 2
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], eax
jb 0x40154e
mov ecx, edi
cmp edi, edx
jb 0x4014c5
mov ecx, edx
lea esi, [ecx - 1]
mov edx, 1
cmp esi, 7
jb 0x401533
mov esi, ecx
and esi, 0xfffffff8
xor edx, edx
mov edi, ebx
mov ebx, dword [esp + 4]
nop
movzx eax, byte [ebx + edx + 1]
mov byte [edi + edx], al
movzx eax, byte [ebx + edx + 2]
mov byte [edi + edx + 1], al
movzx eax, byte [ebx + edx + 3]
mov byte [edi + edx + 2], al
movzx eax, byte [ebx + edx + 4]
mov byte [edi + edx + 3], al
movzx eax, byte [ebx + edx + 5]
mov byte [edi + edx + 4], al
movzx eax, byte [ebx + edx + 6]
mov byte [edi + edx + 5], al
movzx eax, byte [ebx + edx + 7]
mov byte [edi + edx + 6], al
movzx eax, byte [ebx + edx + 8]
mov byte [edi + edx + 7], al
add edx, 8
cmp esi, edx
jne 0x4014e0
add edi, edx
inc edx
mov ebx, edi
and ecx, 7
je 0x40154e
mov esi, dword [esp + 4]
add esi, edx
xor edx, edx
movzx eax, byte [esi + edx]
mov byte [ebx + edx], al
inc edx
cmp ecx, edx
jne 0x401540
add ebx, edx
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x35], al
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [esp + 4], ebx
jle 0x401d52
dec eax
mov byte [esp + 0x36], 0x2b
mov esi, eax
jmp 0x401d5e
mov eax, str.0123456789ABCDEFXP
cmp bl, 0x41
je 0x401586
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x2c], eax
mov ecx, 6
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
mov edx, dword [esp + 8]
je 0x40159e
mov ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
test ecx, ecx
jns 0x4015b3
or edx, 0x80
mov eax, dword [esp + 0x28]
mov edi, dword [eax]
mov al, 0x2d
test dl, dl
mov dword [esp + 0x14], ebx
mov dword [esp + 8], edx
js 0x401717
mov al, 0x20
test dl, 4
jne 0x401717
mov al, 0x2b
test dl, 2
jne 0x401717
mov dword [esp + 4], 0
jmp 0x401721
mov esi, str.0123456789ABCDEFXP
cmp bl, 0x42
je 0x4015fd
mov esi, str.0123456789abcdefxp
mov byte [esp + 0x40], 0
test byte [esp + 8], 8
je 0x40161f
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
mov dword [esp + 0x2c], esi
test byte [esp + 8], 0x20
je 0x40185a
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov esi, dword [eax + 4]
add eax, 8
mov dword [esp + 0x28], eax
jmp 0x401869
mov eax, str.0123456789ABCDEFXP
cmp bl, 0x47
je 0x40165f
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, dword [esp + 0x10]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov ebx, 6
cmp ecx, 0xffffffff
mov esi, dword [esp + 8]
je 0x401685
mov ebx, eax
lea eax, [ebx - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x54]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x7c]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x24]
lea edx, [esp + 0x38]
call fcn.004036c0
add esp, 0x18
test eax, eax
je 0x4016c1
or esi, 0x80
mov edi, dword [esp + 0x20]
cmp edi, ebx
jb 0x4016cb
mov edi, ebx
mov dword [esp + 8], esi
cmp edi, 2
mov dword [esp + 4], ebx
jb 0x401767
mov ecx, dword [esp + 0xc]
lea esi, [edi + edi]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
xor eax, 1
mov edx, esi
and edx, 0xfffffffc
sub edx, eax
cmp byte [ecx + edx], 0x30
jne 0x401767
lea eax, [ebx - 1]
dec edi
cmp edi, 2
jb 0x401769
add esi, 0xfffffffe
cmp ebx, 1
mov ebx, eax
jne 0x4016f0
jmp 0x401769
mov byte [esp + 0x41], al
mov al, 1
mov dword [esp + 4], eax
mov esi, ecx
and esi, 0xfffff
sar ecx, 0x14
mov edx, ecx
not edx
or edx, 0x7ff
lea ebx, [ecx + edx]
inc ebx
test ebx, ebx
je 0x401c02
mov eax, 0xffffffff
add edi, eax
mov eax, 0xfffff
adc esi, eax
lea eax, [ecx + edx]
add eax, 0xfffffc02
mov dword [esp + 0x54], eax
add edi, 1
adc esi, 0
jmp 0x401c17
mov eax, ebx
add dword [esp + 0x28], 8
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], edi
mov ecx, dword [esp + 0x3c]
cmp ecx, 0xfffffffd
mov edi, dword [ebp + 8]
jl 0x4017ee
cmp ecx, dword [esp + 4]
jg 0x4017ee
test ecx, ecx
jle 0x40200a
sub dword [esp + 0x18], ecx
jg 0x402401
mov dword [esp + 0x18], 0
jmp 0x402401
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 8]
mov edx, dword [ecx]
mov dword [esp + 0x14], edx
mov ecx, dword [ecx + 4]
cmp bl, 0x75
je 0x4026da
test ecx, ecx
mov esi, dword [esp + 0x10]
mov ebx, ecx
jns 0x402029
neg dword [esp + 0x14]
mov ecx, 0
sbb ecx, ebx
mov edx, dword [esp + 8]
or edx, 0xa0
mov ebx, ecx
mov dword [esp + 0x28], eax
jmp 0x402041
mov esi, dword [esp + 0x18]
cmp eax, esi
jle 0x401e1b
dec esi
jmp 0x401419
and dword [esp + 8], 0xffffffef
mov dword [esp + 0x10], 8
mov esi, str.0123456789ABCDEFXP
cmp bl, 0x58
je 0x40181c
mov esi, str.0123456789abcdefxp
mov dword [esp + 0x20], 0x440
mov byte [esp + 0x40], 0
mov ecx, 4
test byte [esp + 8], 8
mov dword [esp + 0x2c], esi
je 0x40184f
cmp bl, 0x58
setne al
mov word [esp + 0x40], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x42], al
test byte [esp + 8], 0x20
jne 0x40163b
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
xor esi, esi
mov dword [esp + 0x3c], 0
mov byte [esp + 0x34], 0
mov eax, edx
or eax, esi
jne 0x40188c
mov byte [esp + 0x40], 0
cmp dword [esp + 0x10], 0
je 0x401be2
mov eax, 0xffffffff
shl eax, cl
not eax
and eax, edx
mov ebx, dword [esp + 0x20]
mov cl, bh
shrd edx, esi, cl
mov ecx, dword [esp + 0x2c]
movzx eax, byte [ecx + eax]
mov byte [esp + 0x263], al
mov eax, ebx
mov cl, ah
shr esi, cl
test ah, 0x20
mov dword [esp + 0x18], ebx
je 0x4018c2
mov edx, esi
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [esp + 4], esi
or edx, esi
jne 0x4018e6
mov esi, 1
cmp dword [esp + 0x10], 2
jge 0x4018e6
lea edx, [esp + 0x263]
jmp 0x4019d1
lea edx, [esp + 0x263]
lea ecx, [esp + 0x264]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
test byte [esp + 8], 0x40
jne 0x401910
mov ecx, dword [esp + 0x18]
jmp 0x40195b
mov edi, ecx
mov ebx, dword [esp + 0x18]
lea ecx, [ebx + 1]
mov dword [esp + 0x20], ecx
mov eax, 0xe
sub eax, ebx
mov esi, edx
mov edx, ecx
shr edx, 4
xor edx, eax
not edx
mov eax, esi
test dl, 0xf
jne 0x40195d
mov eax, 0xfffffffe
sub eax, ebx
not eax
and eax, 0xfffffff0
mov dword [esp + 0x20], eax
movzx eax, byte [0x449001]
xor al, 0xef
mov edx, edi
mov byte [edi - 2], al
add edx, 0xfffffffe
mov ecx, dword [esp + 0x20]
mov eax, edx
mov esi, 0xffffffff
mov cl, ch
shl esi, cl
not esi
mov ebx, dword [esp + 0x14]
and esi, ebx
mov edx, dword [esp + 0x20]
mov cl, dh
mov edi, dword [esp + 4]
shrd ebx, edi, cl
mov ecx, dword [esp + 0x2c]
movzx ecx, byte [ecx + esi]
mov esi, edi
mov byte [eax - 1], cl
mov cl, dh
shr esi, cl
mov dword [esp + 0x18], edx
test dh, 0x20
jne 0x4019a0
mov ecx, ebx
jmp 0x4019a4
mov ecx, esi
xor esi, esi
mov edi, dword [ebp + 8]
lea edx, [eax - 1]
mov dword [esp + 0x14], ecx
mov dword [esp + 4], esi
or ecx, esi
mov ecx, eax
jne 0x401900
lea esi, [esp + 0x264]
sub esi, edx
mov ecx, eax
cmp esi, dword [esp + 0x10]
jl 0x401900
mov dword [esp + 4], edx
mov ecx, dword [esp + 0x18]
shl ecx, 0x14
and ecx, 0xf000000
mov eax, ecx
and eax, esi
xor ecx, esi
lea eax, [ecx + eax*2]
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x10]
jmp 0x402a55
mov byte [esp + 0x40], 0
test byte [esp + 8], 8
je 0x401a17
mov word [esp + 0x40], 0x3001
mov dword [esp + 0x20], 0x330
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov ecx, 3
test byte [esp + 8], 0x20
je 0x40185a
jmp 0x40163b
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov edx, str.null
test eax, eax
je 0x401a4d
mov edx, eax
mov ecx, dword [esp + 0x10]
mov eax, ecx
test ecx, ecx
jns 0x401a5c
mov eax, 0xffffffff
test dl, 3
mov dword [esp + 4], edx
je 0x4026ed
mov esi, edx
add edx, eax
test ecx, ecx
je 0x402a24
cmp byte [esi], 0
je 0x4029a2
lea ecx, [esi + 1]
lea esi, [eax - 1]
test cl, 3
je 0x4029e8
test esi, esi
je 0x402a24
cmp byte [ecx], 0
je 0x402a22
mov ecx, dword [esp + 4]
add ecx, 2
lea esi, [eax - 2]
test cl, 3
je 0x4029e8
test esi, esi
je 0x402a24
cmp byte [ecx], 0
je 0x402a22
mov ecx, dword [esp + 4]
add ecx, 3
lea esi, [eax - 3]
test cl, 3
je 0x4029e8
test esi, esi
je 0x402a24
cmp byte [ecx], 0
je 0x402a22
mov ecx, dword [esp + 4]
add ecx, 4
add eax, 0xfffffffc
test cl, 3
je 0x4029ea
test eax, eax
jne 0x402a22
jmp 0x402a24
mov byte [esp + 0x263], bl
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x263]
mov dword [esp + 4], eax
mov dword [esp + 8], 0
mov dword [esp + 0x18], 0
xor edx, edx
mov dword [esp + 0x30], 0
jmp 0x402a55
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x263]
mov dword [esp + 4], eax
jmp 0x402a4b
mov eax, dword [esp + 0x28]
fld qword [eax]
add eax, 8
mov dword [esp + 0x28], eax
test dword [esp + 8], 0x100
mov edx, dword [esp + 0x10]
jne 0x40223d
jmp 0x4023bb
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, dword [esp + 0x48]
sub ecx, dword [esp + 0x24]
add ecx, esi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x28], edx
jmp 0x40351d
mov dword [esp + 0x20], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x264]
mov dword [esp + 4], eax
jmp 0x402a4b
xor eax, eax
mov ecx, edi
or ecx, esi
je 0x401c0f
mov eax, 0xfffffc02
mov dword [esp + 0x54], eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
lea ecx, [eax*4]
xor ebx, ebx
mov eax, 0x8000000
shrd ebx, eax, cl
mov edx, 0x8000000
shr edx, cl
test cl, 0x20
je 0x401c3c
mov ebx, edx
xor edx, edx
cmp dword [esp + 0x10], 0xf
jl 0x401c47
xor ebx, ebx
xor edx, edx
shld esi, edi, 8
shl edi, 8
add edi, ebx
mov dword [esp + 0x50], edi
adc esi, edx
mov edx, dword [esp + 4]
movzx ecx, dl
lea eax, [esp + 0x40]
mov word [ecx + eax + 1], 0x7830
or dl, 2
mov byte [esp + 0x40], dl
mov ecx, esi
shr ecx, 0x1c
mov eax, dword [esp + 0x2c]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xa4], cl
mov edi, dword [esp + 0x10]
test edi, edi
je 0x401d38
movzx ecx, byte [section..data]
xor cl, 0x19
mov byte [esp + 0xa5], cl
lea eax, [esp + 0xa6]
mov dword [esp + 0xc], eax
mov eax, edi
cmp edi, 0xd
mov ebx, dword [esp + 0x14]
jb 0x401cbb
mov eax, 0xd
mov ecx, edi
sub ecx, eax
jg 0x401cc3
xor ecx, ecx
mov edx, eax
and edx, 3
mov dword [esp + 0x18], ecx
mov dword [esp + 4], eax
je 0x401e2d
xor ebx, ebx
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
mov eax, esi
shr eax, 0x18
and eax, 0xf
movzx eax, byte [edi + eax]
shld esi, ecx, 4
mov byte [esp + ebx + 0xa6], al
shl ecx, 4
inc ebx
cmp edx, ebx
jne 0x401ce0
mov dword [esp + 0x50], ecx
lea eax, [esp + 0xa6]
lea edx, [eax + ebx]
mov eax, dword [esp + 4]
sub eax, ebx
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
cmp edi, 4
jae 0x401e41
lea esi, [esp + 0xa6]
mov dword [esp + 0x2c], esi
jmp 0x401eb5
lea edx, [esp + 0xa5]
mov dword [esp + 0xc], edx
xor ecx, ecx
mov dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x14]
jmp 0x401eb5
mov byte [esp + 0x36], 0x2d
mov esi, 1
sub esi, eax
xor eax, eax
cmp esi, 0x64
setge al
mov edi, eax
mov eax, esi
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
lea eax, [ecx + ecx]
lea eax, [eax + eax*4]
mov ebx, esi
sub ebx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
lea eax, [edi + 4]
add bl, 0x30
add edx, edx
lea edx, [edx + edx*4]
mov dword [esp + 0x14], edx
mov dword [esp + 0x2c], eax
mov byte [esp + 0x34], al
mov byte [esp + edi + 0x38], bl
mov edx, ecx
sub edx, dword [esp + 0x14]
add dl, 0x30
mov byte [esp + edi + 0x37], dl
cmp esi, 0x64
mov edx, 0x51eb851f
jl 0x401df6
mov eax, esi
mul edx
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 + 0x34]
mov esi, dword [esp + 0x2c]
mov byte [esi + eax - 2], dl
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x14], 0x3000001
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 4]
jmp 0x40298a
xor esi, esi
sub eax, 1
jb 0x401419
mov esi, eax
jmp 0x401419
lea edx, [esp + 0xa6]
mov eax, dword [esp + 4]
cmp edi, 4
jb 0x401d28
mov ebx, esi
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
nop
nop
nop
nop
nop
mov dword [esp + 4], eax
mov eax, esi
shr eax, 0x18
and eax, 0xf
movzx eax, byte [edi + eax]
mov byte [edx], al
mov eax, esi
shr eax, 0x14
and eax, 0xf
movzx eax, byte [edi + eax]
mov byte [edx + 1], al
mov eax, esi
shr eax, 0x10
and eax, 0xf
movzx eax, byte [edi + eax]
mov byte [edx + 2], al
shld ebx, ecx, 0x10
shl ecx, 0x10
shr esi, 0xc
and esi, 0xf
movzx eax, byte [edi + esi]
mov byte [edx + 3], al
mov eax, dword [esp + 4]
add edx, 4
mov esi, ebx
add eax, 0xfffffffc
jne 0x401e50
lea esi, [esp + 0xa6]
mov dword [esp + 0x2c], esi
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
cmp bl, 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x35], al
mov ebx, dword [esp + 0x54]
test ebx, ebx
js 0x401ed3
mov byte [esp + 0x36], 0x2b
jmp 0x401eda
mov byte [esp + 0x36], 0x2d
neg ebx
cmp ebx, 0x3e7
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edx
jg 0x401efd
cmp ebx, 0x63
jle 0x401fee
mov dword [esp + 4], 5
jmp 0x401f05
mov dword [esp + 4], 6
mov dword [esp + 0x14], 0
mov eax, ebx
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
mov esi, ebx
lea ebx, [edx + edx*4]
mov eax, esi
mov edi, 0x66666667
imul edi
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
imul edi
mov eax, esi
sub eax, ebx
mov ebx, dword [esp + 4]
mov byte [esp + 0x34], bl
or al, 0x30
mov byte [esp + ebx + 0x34], al
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
mov byte [esp + ebx + 0x33], cl
cmp byte [esp + 0x14], 0
mov edi, dword [ebp + 8]
jne 0x40285f
mov eax, esi
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x34]
mov edx, dword [esp + 4]
mov byte [edx + eax - 2], cl
cmp esi, 0x3e8
jl 0x40285f
mov eax, esi
mov ecx, 0x10624dd3
mul ecx
mov ecx, edx
shr ecx, 6
mov eax, ecx
mov edx, 0x1999999a
mul edx
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
or cl, 0x30
lea eax, [esp + 0x34]
mov edx, dword [esp + 4]
mov byte [edx + eax - 3], cl
jmp 0x40285f
cmp ebx, 9
jle 0x402836
mov dword [esp + 4], 4
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x401f0d
mov edx, dword [esp + 0x18]
cmp eax, edx
jl 0x402014
mov eax, edx
sub eax, ecx
mov dword [esp + 0x18], eax
jmp 0x402401
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 8]
jmp 0x40203f
mov dword [esp + 0x28], eax
mov edx, dword [esp + 8]
jmp 0x402041
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
xor ebx, ebx
mov dword [esp + 8], edx
test edx, 0x100
jne 0x40220e
movzx ecx, byte [0x449001]
mov eax, ecx
add al, cl
and al, 0xde
mov edx, ecx
sub dl, al
add dl, 0xef
mov byte [esp + 0x54], dl
xor cl, 0xef
mov byte [esp + 0x18], cl
mov esi, 0x200
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esp + 0x14]
cmp edi, 0x5f5e100
mov eax, ebx
sbb eax, 0
mov dword [esp + 0x50], edx
jb 0x4020c0
push 0
push 0x5f5e100
push ebx
push edi
call fcn.0040c920
mov dword [esp + 0x2c], edx
mov ebx, edi
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov ecx, eax
jmp 0x4020cc
mov dword [esp + 0x2c], 0
mov ebx, edi
xor ecx, ecx
lea eax, [esp + 0x5c]
lea edi, [eax + esi]
test byte [esp + 8], 0x40
mov dword [esp + 0x14], ecx
jne 0x402140
mov dword [esp + 4], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
mov ecx, 0x51eb851f
mul ecx
shr edx, 5
imul ecx, edx, 0x64
mov eax, ebx
sub eax, ecx
mov ecx, eax
and ecx, 0x7d
mov edi, eax
and edi, 2
or eax, 2
imul eax, edi
xor edi, 2
imul edi, ecx
movzx eax, word [edi + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x62], ax
add esi, 0xfffffffe
cmp ebx, 0x64
mov ebx, edx
jae 0x4020f0
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 4]
jmp 0x4021b0
test ebx, ebx
mov edx, dword [esp + 0x50]
jne 0x40217e
jmp 0x4021b0
mov dword [esp + 4], edi
mov edi, edx
mov eax, ebx
mov ecx, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ebx, eax
or bl, 0x30
mov byte [esp + esi + 0x63], bl
dec esi
mov ebx, edx
mov edx, edi
mov edi, dword [esp + 4]
test ebx, ebx
je 0x4021b0
test byte [esp + 8], 0x40
je 0x402150
cmp edx, 3
je 0x402191
mov dword [esp + 4], edi
inc edx
jmp 0x402154
movzx eax, byte [esp + 0x54]
mov byte [esp + esi + 0x63], al
dec esi
dec edi
xor edx, edx
test ebx, ebx
jne 0x40217e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x2c]
or eax, ebx
je 0x402288
lea eax, [esp + esi]
add eax, 0x64
cmp eax, edi
mov ecx, dword [esp + 8]
jne 0x4021f5
jmp 0x402080
inc edx
mov byte [esp + esi + 0x63], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x64
cmp eax, edi
je 0x402080
test cl, 0x40
je 0x4021e1
cmp edx, 3
jne 0x4021e0
movzx eax, byte [esp + 0x18]
mov byte [esp + esi + 0x63], al
dec esi
dec edi
xor edx, edx
jmp 0x4021e7
mov eax, 1
cmp esi, 0xffffffff
je 0x40221a
mov eax, esi
xor edx, edx
cmp dword [esp + 0x14], 0x400
mov ecx, ebx
sbb ecx, 0
jb 0x40222d
mov edx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ebx
fild qword [esp + 0x58]
xor eax, eax
mov ecx, dword [esp + 8]
test ecx, 0x800
sete al
fld qword [eax*8 + 0x446550]
cmp ecx, 0x3ffffff
ja 0x402307
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x402336
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x402336
fstp st(0)
fstp st(0)
jmp 0x4023bb
cmp esi, 0x200
setne al
cmp byte [esp + esi + 0x64], 0x30
sete cl
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov dl, 0x2d
cmp byte [esp + 8], 0
mov edi, dword [ebp + 8]
js 0x4022c1
mov dl, 0x20
test byte [esp + 8], 4
jne 0x4022c1
mov dl, 0x2b
test byte [esp + 8], 2
je 0x4022ca
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], dl
and al, cl
movzx eax, al
add esi, eax
lea eax, [esp + esi]
add eax, 0x64
lea edx, [esi - 0x200]
neg edx
mov dword [esp + 0x20], edx
cmp esi, 0x200
jne 0x40230e
mov byte [eax - 1], 0x30
dec eax
mov dword [esp + 4], eax
mov dword [esp + 0x20], 1
mov eax, 1
mov edx, dword [esp + 0x10]
jmp 0x40231a
fstp st(0)
jmp 0x4023bb
mov ecx, edx
mov dword [esp + 4], eax
mov edx, dword [esp + 0x10]
mov eax, ecx
mov dword [esp + 0x18], 0
test edx, edx
jg 0x402328
xor edx, edx
add eax, 0x3000000
mov dword [esp + 0x14], eax
jmp 0x402a55
fdiv st(2), st(0)
mov eax, dword [esp + 8]
lea ecx, [eax + 0x1000000]
cmp eax, 0x2ffffff
ja 0x4023b3
fucom st(2)
fnstsw ax
sahf
jbe 0x40235b
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4023b3
fdiv st(2), st(0)
mov eax, dword [esp + 8]
lea ecx, [eax + 0x2000000]
cmp eax, 0x1ffffff
ja 0x4023b3
fucom st(2)
fnstsw ax
sahf
jbe 0x402380
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4023b3
fdiv st(2), st(0)
mov eax, dword [esp + 8]
lea ecx, [eax + 0x3000000]
cmp eax, 0xffffff
ja 0x4023b3
fucom st(2)
fnstsw ax
sahf
jbe 0x403657
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x403657
fstp st(0)
fstp st(0)
mov dword [esp + 8], ecx
mov ecx, 6
cmp edx, 0xffffffff
je 0x4023c7
mov ecx, edx
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x54]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x24]
lea edx, [esp + 0x38]
call fcn.004036c0
add esp, 0x18
test eax, eax
je 0x402401
or dword [esp + 8], 0x80
mov byte [esp + 0x34], 0
mov byte [esp + 0x40], 0
mov al, 0x2d
cmp byte [esp + 8], 0
js 0x402426
mov al, 0x20
test byte [esp + 8], 4
jne 0x402426
mov al, 0x2b
test byte [esp + 8], 2
je 0x40242f
mov byte [esp + 0x40], 1
mov byte [esp + 0x41], al
mov ecx, dword [esp + 0x3c]
cmp ecx, 0x7000
jne 0x402450
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0xc]
mov dword [esp + 4], eax
jmp 0x402a4b
test ecx, ecx
jle 0x4024de
xor edx, edx
mov ebx, dword [esp + 8]
test bl, 0x40
mov edi, dword [esp + 0x18]
je 0x402480
mov esi, 0x258
sub esi, ecx
mov eax, esi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, esi
sub edx, eax
cmp ecx, dword [esp + 0x20]
jae 0x402565
mov dword [esp + 0x18], edi
mov edi, edx
xor ecx, ecx
lea eax, [esp + 0xa4]
jmp 0x4024bc
mov esi, eax
mov eax, dword [esp + 0xc]
movzx edx, byte [eax + ecx]
lea eax, [esi + 1]
mov byte [esi], dl
inc ecx
mov edx, dword [esp + 0x3c]
cmp ecx, edx
jae 0x4025d2
test bl, 0x40
je 0x4024a0
inc edi
cmp edi, 4
jne 0x4024a0
mov edi, ebx
and edi, 0x40
shr edi, 6
movzx edx, byte [0x449001]
xor dl, 0xef
mov byte [eax], dl
inc eax
jmp 0x4024a0
mov byte [esp + 0xa4], 0x30
lea edx, [esp + 0xa5]
mov esi, dword [esp + 0x18]
test esi, esi
je 0x402515
movzx eax, byte [section..data]
mov edx, eax
add dl, al
and dl, 0x32
sub al, dl
add al, 0x19
mov byte [esp + 0xa5], al
lea edx, [esp + 0xa6]
neg ecx
mov ebx, esi
cmp esi, ecx
jl 0x40251f
mov ebx, ecx
test ebx, ebx
mov dword [esp + 0x10], ebx
je 0x4026f4
mov eax, edx
and eax, 3
je 0x4026f4
mov ecx, edx
mov esi, edx
not esi
and esi, 3
dec ebx
cmp esi, ebx
jb 0x402546
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x30
mov edi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
add edi, esi
inc edi
mov dword [esp + 4], edi
sub ebx, esi
jmp 0x4026f8
xor ebx, ebx
lea eax, [esp + 0xa4]
mov dword [esp + 4], eax
jmp 0x4025a0
mov esi, dword [esp + 4]
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + ebx]
lea ecx, [esi + 1]
mov dword [esp + 4], ecx
mov byte [esi], al
inc ebx
cmp ebx, dword [esp + 0x20]
jae 0x40263d
test byte [esp + 8], 0x40
je 0x402580
inc edx
cmp edx, 4
jne 0x402580
mov edx, dword [esp + 8]
and edx, 0x40
shr edx, 6
movzx eax, byte [0x449001]
mov ecx, eax
add cl, al
and cl, 0xde
sub al, cl
add al, 0xef
mov esi, dword [esp + 4]
mov byte [esi], al
inc esi
jmp 0x402584
mov ebx, eax
mov edi, dword [esp + 0x18]
test edi, edi
je 0x4025f2
movzx edx, byte [section..data]
xor dl, 0x19
mov byte [esi + 1], dl
add esi, 2
mov edx, dword [esp + 0x3c]
mov ebx, esi
mov dword [esp + 4], ebx
mov esi, dword [esp + 0x20]
mov ebx, esi
sub ebx, edx
cmp ebx, edi
jbe 0x402609
lea esi, [edx + edi]
mov dword [esp + 0x20], esi
cmp ecx, esi
mov edi, dword [ebp + 8]
jae 0x4027d0
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0xc]
movzx edx, byte [edx + ecx]
mov byte [ebx], dl
inc ebx
inc ecx
mov esi, dword [esp + 0x20]
cmp ecx, esi
jb 0x402620
mov edx, dword [esp + 0x3c]
jmp 0x4027d4
mov eax, dword [esp + 0x3c]
cmp ebx, eax
jae 0x402802
mov ecx, eax
not ecx
and ecx, ebx
not ebx
and ebx, eax
mov eax, ebx
sub eax, ecx
test byte [esp + 8], 0x40
jne 0x4029a6
test eax, eax
je 0x4026ab
mov dword [esp + 0x10], edx
mov edx, dword [esp + 4]
and edx, 3
je 0x4026a7
mov edi, 2
sub edi, esi
and edi, 3
not ecx
add ebx, ecx
cmp edi, ebx
jb 0x402687
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x30
push dword [esp + 0xc]
call fcn.0040ca10
add esp, 0xc
lea eax, [esi + edi]
add eax, 2
mov dword [esp + 4], eax
sub ebx, edi
mov eax, ebx
mov edx, dword [esp + 0x10]
cmp eax, 4
mov edi, dword [ebp + 8]
jb 0x4029a9
mov ebx, dword [esp + 4]
mov dword [ebx], 0x30303030
add ebx, 4
mov ecx, eax
not ecx
and ecx, 4
and eax, 0xfffffffb
sub eax, ecx
cmp eax, 3
ja 0x4026bb
jmp 0x4029bb
mov dword [esp + 0x28], eax
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
mov ebx, ecx
jmp 0x402041
mov ecx, edx
jmp 0x4029ea
mov dword [esp + 4], edx
cmp ebx, 4
jl 0x402735
mov eax, ebx
cmp ebx, 7
jl 0x402709
mov eax, 7
neg eax
lea esi, [ebx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
mov edi, dword [esp + 0xc]
push edi
call fcn.0040ca10
add esp, 0xc
add edi, esi
add edi, 4
mov dword [esp + 4], edi
sub ebx, esi
add ebx, 0xfffffffc
test ebx, ebx
je 0x40274f
push ebx
push 0x30
mov esi, dword [esp + 0xc]
push esi
call fcn.0040ca10
add esp, 0xc
add esi, ebx
mov dword [esp + 4], esi
mov edi, dword [ebp + 8]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
lea ecx, [eax + edx]
cmp ecx, dword [esp + 0x18]
jle 0x40276d
mov eax, dword [esp + 0x18]
sub eax, edx
mov dword [esp + 0x20], eax
test eax, eax
mov ebx, dword [esp + 4]
je 0x4028f4
mov edx, dword [esp + 0x18]
mov esi, edx
cmp edx, ecx
jl 0x402785
mov esi, ecx
mov ecx, eax
and ecx, 3
je 0x40289c
mov dword [esp + 0x14], esi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 1]
mov dword [esp + 0xc], edx
movzx edx, byte [ebx]
mov edi, dword [esp + 4]
mov byte [edi + esi], dl
inc esi
cmp ecx, esi
jne 0x4027a0
add edi, esi
mov ecx, eax
sub ecx, esi
mov edx, edi
mov edi, dword [ebp + 8]
mov ebx, edx
mov esi, dword [esp + 0x14]
jmp 0x40289e
mov ebx, dword [esp + 4]
lea ecx, [esp + 0xa4]
sub eax, ecx
mov ecx, eax
and ecx, 0x3000000
xor eax, 0x3000000
lea eax, [eax + ecx*2]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
sub eax, esi
add eax, edx
mov dword [esp + 0x18], eax
jmp 0x402906
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 4]
mov ecx, ebx
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x18], 0
je 0x402892
movzx eax, byte [section..data]
xor al, 0x19
mov byte [ebx], al
inc ebx
jmp 0x402906
mov eax, ebx
mov ecx, 0x66666667
imul ecx
mov byte [esp + 0x34], 3
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ebx, eax
add bl, 0x30
mov byte [esp + 0x37], bl
mov edi, dword [ebp + 8]
add dword [esp + 0x28], 8
mov ecx, dword [esp + 0x10]
mov eax, ecx
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x20], ecx
xor edx, edx
mov dword [esp + 0x14], 0x3000001
mov dword [esp + 4], eax
jmp 0x402a55
mov dword [esp + 0x18], 0
jmp 0x402906
mov ecx, eax
mov edx, dword [esp + 0x10]
sub edx, esi
cmp edx, 0xfffffffc
ja 0x4028f4
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ebx], dl
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ebx + 1], dl
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ebx + 2], dl
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ebx + 3], dl
add ebx, 4
add ecx, 0xfffffffc
jne 0x4028a9
mov ecx, dword [esp + 0x10]
add ecx, eax
sub dword [esp + 0x18], ecx
mov dword [esp + 0x14], 0x3000001
mov esi, dword [esp + 8]
test esi, 0x100
je 0x40298a
mov eax, esi
and eax, 0x400
sete byte [esp + 0x34]
mov byte [esp + 0x35], 0x20
cmp esi, 0x1000000
jb 0x40298a
mov ecx, esi
shr ecx, 0x18
test esi, 0x800
jne 0x402956
movzx ecx, byte [ecx + str._kMGT]
mov edx, eax
shr edx, 0xa
neg edx
mov byte [esp + edx + 0x36], cl
cmp eax, 1
mov eax, 0
adc al, 1
jmp 0x402986
movzx ecx, byte [ecx + str._KMGT]
mov edx, esi
shr edx, 0xa
or edx, 0xfffffffe
neg edx
mov byte [esp + edx + 0x34], cl
cmp eax, 1
mov eax, 0
adc al, 1
test esi, 0x1000
jne 0x402986
movzx eax, al
mov byte [esp + eax + 0x35], 0x69
inc eax
mov byte [esp + 0x34], al
lea eax, [esp + 0xa4]
sub ebx, eax
mov dword [esp + 0x20], ebx
xor edx, edx
mov dword [esp + 4], eax
jmp 0x402a55
mov edx, esi
jmp 0x402a24
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 4]
test eax, eax
jne 0x4029c3
jmp 0x402809
mov byte [ebx], 0x30
dec eax
inc ebx
test eax, eax
je 0x402809
test byte [esp + 8], 0x40
je 0x4029b6
inc edx
cmp edx, 4
jne 0x4029b6
movzx ecx, byte [0x449001]
xor cl, 0xef
mov byte [ebx], cl
xor edx, edx
inc ebx
test eax, eax
jne 0x4029c3
jmp 0x402809
mov eax, esi
cmp eax, 4
jb 0x402a10
mov edx, dword [ecx]
mov esi, edx
not esi
add edx, 0xfefefeff
and edx, esi
test edx, 0x80808080
jne 0x402a14
add ecx, 4
add eax, 0xfffffffc
cmp eax, 3
ja 0x4029ef
test eax, eax
je 0x402a22
lea edx, [ecx + eax]
cmp byte [ecx], 0
je 0x402a22
inc ecx
dec eax
jne 0x402a17
mov ecx, edx
mov edx, ecx
add dword [esp + 0x28], 4
sub edx, dword [esp + 4]
mov dword [esp + 0x20], edx
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
xor edx, edx
mov ebx, dword [esp + 0x20]
cmp edx, ebx
jg 0x402a5f
mov edx, ebx
movsx eax, byte [esp + 0x40]
mov ecx, edx
movsx esi, byte [esp + 0x34]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
add edx, ecx
add edx, eax
add edx, esi
mov esi, dword [esp + 0x30]
cmp esi, edx
jg 0x402a83
mov esi, edx
sub esi, edx
mov dword [esp + 0x30], esi
sub dword [esp + 0x10], ebx
mov ecx, dword [esp + 8]
test cl, 1
mov esi, dword [esp + 0x1c]
jne 0x402ac3
test cl, 0x10
jne 0x402aa9
mov dword [esp + 8], 0
jmp 0x402ac3
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
cmp ecx, edx
jg 0x402ab7
mov ecx, edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x30], 0
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x30]
add ecx, dword [esp + 0x10]
je 0x402f9b
test byte [esp + 8], 1
jne 0x402c22
cmp dword [esp + 0x30], 0
jle 0x402c22
mov ecx, dword [esp + 0x30]
jmp 0x402b0e
mov ecx, dword [esp + 0x30]
sub ecx, edx
test ecx, ecx
jle 0x402c19
mov eax, dword [esp + 0x24]
sub eax, esi
add eax, 0x200
mov edx, ecx
mov dword [esp + 0x30], ecx
cmp ecx, eax
jl 0x402b25
mov edx, eax
test edi, edi
jne 0x402b2d
mov edx, dword [esp + 0x30]
test edx, edx
mov dword [esp + 0x1c], edx
je 0x402b90
mov eax, esi
and eax, 3
je 0x402b90
mov ecx, esi
not esi
and esi, 3
lea ebx, [edx - 1]
cmp esi, ebx
jb 0x402b4c
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
lea ecx, [esi + edi]
inc ecx
sub ebx, esi
mov edi, dword [ebp + 8]
cmp ebx, 4
jge 0x402b99
test ebx, ebx
je 0x402bd3
push ebx
push 0x20
mov esi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
add esi, ebx
jmp 0x402bd5
mov ecx, esi
mov ebx, edx
cmp ebx, 4
jl 0x402b6b
mov eax, ebx
cmp ebx, 7
jl 0x402ba5
mov eax, 7
neg eax
lea esi, [ebx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
lea ecx, [esi + edi]
add ecx, 4
sub ebx, esi
add ebx, 0xfffffffc
mov edi, dword [ebp + 8]
test ebx, ebx
jne 0x402b6f
mov esi, ecx
mov edx, dword [esp + 0x1c]
test edi, edi
je 0x402b00
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402b00
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x1c]
jmp 0x402b00
mov dword [esp + 0x30], ecx
movzx eax, byte [esp + 0x40]
lea ecx, [esp + 0x41]
mov dword [esp + 0xc], ecx
jmp 0x402c3b
mov esi, eax
mov dword [esp + 0x24], eax
movzx eax, byte [esp + 0x40]
test al, al
je 0x402d4d
movsx edx, al
mov ecx, dword [esp + 0x24]
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402c58
mov ecx, edx
test edi, edi
jne 0x402c5e
mov ecx, edx
sub al, cl
mov byte [esp + 0x40], al
test ecx, ecx
je 0x402cfb
mov eax, ecx
and eax, 3
je 0x402d40
mov dword [esp + 0x1c], ecx
xor edx, edx
nop
nop
nop
mov ebx, esi
mov esi, dword [esp + 0xc]
lea edi, [esi + 1]
mov dword [esp + 0xc], edi
movzx ecx, byte [esi]
mov esi, ebx
mov byte [ebx + edx], cl
inc edx
cmp eax, edx
jne 0x402c80
add esi, edx
mov ecx, dword [esp + 0x1c]
mov eax, ecx
sub eax, edx
mov edi, dword [ebp + 8]
cmp ecx, 4
jb 0x402cfb
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402cb0
test edi, edi
je 0x402c36
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402c36
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call edi
add esp, 0xc
test eax, eax
jne 0x402c30
jmp 0x403696
mov eax, ecx
cmp ecx, 4
jae 0x402cb0
jmp 0x402cfb
mov eax, dword [esp + 0x14]
mov ebx, eax
shr ebx, 0x18
xor edi, edi
test byte [esp + 8], 0x40
je 0x402d73
and eax, 0xffffff
add eax, dword [esp + 0x10]
lea ecx, [ebx + 1]
xor edx, edx
div ecx
mov edi, ebx
sub edi, edx
cmp dword [esp + 0x10], 0
jle 0x4030dd
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 4]
mov dword [esp + 0x2c], ebx
jmp 0x402da0
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c]
test eax, eax
jle 0x402f93
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
cmp dword [ebp + 8], 0
je 0x402ddd
mov eax, esi
sub eax, dword [esp + 0x24]
mov ecx, eax
xor ecx, 0x200
not eax
and eax, 0x200
add eax, eax
sub eax, ecx
mov ebx, dword [esp + 0x10]
mov ecx, ebx
mov dword [esp + 0x1c], ebx
cmp ebx, eax
jl 0x402dd9
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x2c]
test byte [esp + 8], 0x40
jne 0x402e40
cmp dword [esp + 0x1c], 0
je 0x402e50
mov eax, esi
and eax, 3
je 0x402e50
mov ecx, esi
mov edx, esi
not edx
and edx, 3
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 1]
cmp edx, ecx
jb 0x402e08
mov edx, ecx
mov dword [esp + 0x50], edx
lea eax, [edx + 1]
push eax
push 0x30
push esi
mov dword [esp + 0x20], ecx
call fcn.0040ca10
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [esp + 0x50]
add esi, eax
inc esi
sub ecx, eax
mov edx, dword [esp + 4]
cmp ecx, 4
jge 0x402e59
jmp 0x402e99
mov ecx, dword [esp + 0x1c]
jmp 0x402e99
mov ecx, dword [esp + 0x1c]
cmp ecx, 4
jl 0x402e99
mov eax, ecx
cmp ecx, 7
jl 0x402e65
mov eax, 7
neg eax
lea ebx, [ecx + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push esi
mov dword [esp + 0x20], ecx
call fcn.0040ca10
mov ecx, dword [esp + 0x20]
add esp, 0xc
add esi, ebx
add esi, 4
sub ecx, ebx
add ecx, 0xfffffffc
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x2c]
test ecx, ecx
je 0x402ee0
test cl, 1
jne 0x402eb0
mov eax, ecx
cmp ecx, 1
jne 0x402f3f
jmp 0x402ee0
mov al, 0x30
test byte [esp + 8], 0x40
je 0x402ecb
cmp edi, ebx
jne 0x402eca
movzx eax, byte [0x449001]
xor al, 0xef
xor edi, edi
jmp 0x402ecb
inc edi
mov byte [esi], al
inc esi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x402f3f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402d90
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402d90
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov dword [esp + 0x24], eax
mov edx, dword [esp + 4]
jmp 0x402d90
mov edx, dword [esp + 4]
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402ee0
mov cl, 0x30
test byte [esp + 8], 0x40
je 0x402f61
cmp edi, ebx
jne 0x402f60
movzx edx, byte [0x449001]
xor dl, 0xef
xor edi, edi
jmp 0x402f63
inc edi
mov dl, 0x30
mov byte [esi], dl
test byte [esp + 8], 0x40
je 0x402f30
cmp edi, ebx
mov edx, dword [esp + 4]
jne 0x402f90
movzx ecx, byte [0x449001]
xor cl, 0xef
xor edi, edi
jmp 0x402f34
inc edi
jmp 0x402f34
movzx eax, byte [esp + 0x40]
mov edi, dword [ebp + 8]
lea ecx, [esp + 0x41]
mov dword [esp + 0xc], ecx
jmp 0x402fbf
mov esi, eax
mov dword [esp + 0x24], eax
mov edx, dword [esp + 4]
movzx eax, byte [esp + 0x40]
test al, al
je 0x4030e9
movsx edx, al
mov ecx, dword [esp + 0x24]
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402fdc
mov ecx, edx
test edi, edi
jne 0x402fe2
mov ecx, edx
sub al, cl
mov byte [esp + 0x40], al
test ecx, ecx
je 0x40308b
mov eax, ecx
and eax, 3
je 0x4030d0
mov dword [esp + 0x1c], ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, esi
mov esi, dword [esp + 0xc]
lea edi, [esi + 1]
mov dword [esp + 0xc], edi
movzx ecx, byte [esi]
mov esi, ebx
mov byte [ebx + edx], cl
inc edx
cmp eax, edx
jne 0x403010
add esi, edx
mov ecx, dword [esp + 0x1c]
mov eax, ecx
sub eax, edx
mov edi, dword [ebp + 8]
cmp ecx, 4
jb 0x40308b
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0xc]
lea edx, [ecx + 1]
mov dword [esp + 0xc], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x403040
test edi, edi
je 0x402fb6
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402fb6
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call edi
add esp, 0xc
test eax, eax
jne 0x402fb0
jmp 0x403696
mov eax, ecx
cmp ecx, 4
jae 0x403040
jmp 0x40308b
lea eax, [esp + 0x41]
mov dword [esp + 0xc], eax
mov edx, dword [esp + 4]
mov edi, dword [esp + 0x20]
test edi, edi
jne 0x40323a
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov edi, dword [ebp + 8]
jne 0x4033ec
lea eax, [esp + 0x35]
mov dword [esp + 0xc], eax
nop
nop
nop
nop
movzx eax, byte [esp + 0x34]
test al, al
je 0x403509
movsx ecx, al
mov eax, ecx
test edi, edi
je 0x403141
mov eax, esi
not eax
mov edx, dword [esp + 0x24]
and eax, edx
not edx
and edx, esi
sub eax, edx
add eax, 0x200
cmp eax, ecx
jl 0x403141
mov eax, ecx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x4031db
mov ecx, eax
and ecx, 3
je 0x403220
mov dword [esp + 0x1c], eax
xor edx, edx
mov eax, esi
mov esi, dword [esp + 0xc]
lea edi, [esi + 1]
mov dword [esp + 0xc], edi
movzx ebx, byte [esi]
mov esi, eax
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x403160
add esi, edx
mov eax, dword [esp + 0x1c]
mov ecx, eax
sub ecx, edx
mov edi, dword [ebp + 8]
cmp eax, 4
jb 0x4031db
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x403190
test edi, edi
je 0x403110
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x403110
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov dword [esp + 0x24], eax
jmp 0x403110
mov ecx, eax
cmp eax, 4
jae 0x403190
jmp 0x4031db
sub edi, dword [esp + 0x1c]
je 0x4030f5
mov eax, dword [esp + 0x24]
sub eax, esi
add eax, 0x200
mov ecx, edi
cmp edi, eax
jl 0x40324d
mov ecx, eax
cmp dword [ebp + 8], 0
jne 0x403255
mov ecx, edi
cmp ecx, 4
mov dword [esp + 0x1c], ecx
jl 0x4032b0
lea ebx, [ecx - 4]
mov eax, ebx
shr eax, 2
inc eax
and eax, 7
je 0x4032b4
mov dword [esp + 4], ebx
shl eax, 2
mov ebx, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebx + edx]
mov dword [esi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x403280
add esi, edx
mov ecx, dword [esp + 0x1c]
sub ecx, edx
add ebx, edx
mov eax, ecx
mov edx, ebx
mov ebx, dword [esp + 4]
cmp ebx, 0x1c
jae 0x4032c0
jmp 0x403301
mov eax, ecx
jmp 0x403301
cmp ebx, 0x1c
jb 0x403301
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [edx]
mov dword [esi], eax
mov eax, dword [edx + 4]
mov dword [esi + 4], eax
mov eax, dword [edx + 8]
mov dword [esi + 8], eax
mov eax, dword [edx + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [edx + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [esi + 0x1c], eax
add esi, 0x20
add edx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x4032c0
test eax, eax
je 0x403381
mov ecx, eax
and ecx, 7
je 0x4033d0
mov dword [esp + 4], edi
mov edi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x403320
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov edx, edi
mov edi, dword [esp + 4]
cmp eax, 8
jb 0x403381
nop
movzx eax, byte [edx]
mov byte [esi], al
movzx eax, byte [edx + 1]
mov byte [esi + 1], al
movzx eax, byte [edx + 2]
mov byte [esi + 2], al
movzx eax, byte [edx + 3]
mov byte [esi + 3], al
movzx eax, byte [edx + 4]
mov byte [esi + 4], al
movzx eax, byte [edx + 5]
mov byte [esi + 5], al
movzx eax, byte [edx + 6]
mov byte [esi + 6], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [esi + 7], al
add esi, 8
add ecx, 0xfffffff8
jne 0x403340
cmp dword [ebp + 8], 0
je 0x403230
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x403230
mov ebx, edi
mov edi, edx
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov dword [esp + 0x24], eax
mov edx, edi
mov edi, ebx
jmp 0x403230
mov ecx, eax
cmp eax, 8
jae 0x403340
jmp 0x403381
mov ecx, dword [esp + 0x18]
sub ecx, edx
je 0x403104
mov eax, dword [esp + 0x24]
sub eax, esi
add eax, 0x200
mov edx, ecx
mov dword [esp + 0x18], ecx
cmp ecx, eax
jl 0x403403
mov edx, eax
test edi, edi
jne 0x40340b
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x1c], edx
je 0x403480
mov eax, esi
and eax, 3
je 0x403480
mov ecx, esi
mov ebx, esi
not ebx
and ebx, 3
lea esi, [edx - 1]
cmp ebx, esi
jb 0x40342c
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
mov edi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
lea ecx, [ebx + edi]
inc ecx
sub esi, ebx
mov edi, dword [ebp + 8]
mov edx, dword [esp + 0x1c]
cmp esi, 4
jge 0x403489
test esi, esi
je 0x4034c7
push esi
push 0x30
mov ebx, edi
mov edi, ecx
push ecx
call fcn.0040ca10
mov edx, dword [esp + 0x28]
add esp, 0xc
add edi, esi
mov esi, edi
mov edi, ebx
test edi, edi
jne 0x4034d1
jmp 0x4033e0
mov ecx, esi
mov esi, edx
cmp esi, 4
jl 0x40344f
mov eax, esi
cmp esi, 7
jl 0x403495
mov eax, 7
neg eax
lea edi, [esi + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
lea ecx, [edi + ebx]
add ecx, 4
sub esi, edi
add esi, 0xfffffffc
mov edi, dword [ebp + 8]
mov edx, dword [esp + 0x1c]
test esi, esi
jne 0x403453
mov esi, ecx
test edi, edi
je 0x4033e0
mov eax, esi
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 0x1ff
jl 0x4033e0
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x1c]
jmp 0x4033e0
test byte [esp + 8], 1
je 0x40351d
cmp dword [esp + 0x30], 0
jle 0x40351d
mov ecx, dword [esp + 0x30]
jne 0x40353a
mov ebx, dword [esp + 0x4c]
inc ebx
jmp 0x40103d
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 8]
je 0x40351d
mov eax, edi
mov ebx, esi
not ebx
mov edx, dword [esp + 0x24]
not edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], ecx
mov edx, ecx
test edi, edi
je 0x403573
mov eax, dword [esp + 0x24]
and eax, ebx
mov ecx, dword [esp + 0x1c]
and ecx, esi
sub eax, ecx
add eax, 0x200
mov ecx, dword [esp + 0x30]
mov edx, ecx
cmp ecx, eax
jl 0x403573
mov edx, eax
test edx, edx
mov dword [esp + 8], edx
je 0x4035b0
mov ecx, esi
and esi, 3
je 0x4035b2
and ebx, 3
lea esi, [edx - 1]
cmp ebx, esi
jb 0x40358e
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
lea ecx, [ebx + edi]
inc ecx
sub esi, ebx
cmp esi, 4
jge 0x4035b9
jmp 0x4035ec
mov ecx, esi
mov esi, edx
cmp esi, 4
jl 0x4035ec
mov eax, esi
cmp esi, 7
jl 0x4035c5
mov eax, 7
neg eax
lea edi, [esi + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
lea ecx, [edi + ebx]
add ecx, 4
sub esi, edi
add esi, 0xfffffffc
mov edi, dword [ebp + 8]
test esi, esi
je 0x403610
push esi
push 0x20
mov ebx, edi
mov edi, ecx
push ecx
call fcn.0040ca10
add esp, 0xc
add edi, esi
mov esi, edi
mov edi, ebx
jmp 0x403612
mov esi, ecx
mov edx, dword [esp + 0x1c]
test edi, edi
je 0x403530
mov eax, esi
mov ecx, dword [esp + 0x24]
xor eax, ecx
and edx, esi
add edx, edx
sub edx, eax
lea eax, [edx + 1]
cmp eax, 0x200
jl 0x403530
add dword [esp + 0x48], edx
push edx
push dword [ebp + 0xc]
push ecx
call edi
add esp, 0xc
test eax, eax
je 0x403696
mov esi, eax
mov dword [esp + 0x24], eax
jmp 0x403530
fstp st(1)
fdivp st(1)
or dword [esp + 8], 0x4000000
jmp 0x4023bb
test edi, edi
je 0x40369c
mov eax, esi
mov edx, dword [esp + 0x24]
sub eax, edx
lea ecx, [eax + 0x1ff]
cmp ecx, 0x200
jl 0x4036a3
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push edx
call edi
add esp, 0xc
mov esi, eax
mov edx, eax
jmp 0x4036a3
xor esi, esi
xor edx, edx
jmp 0x4036a3
mov byte [esi], 0
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x48]
add eax, esi
sub eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret