Function at 0x40ffd1
Capabilities:
Authenticate hmac
Check os version
Encrypt data using speck
Get number of processors
Inspect section memory permissions
Parse credit card information
Parse pe header
Resolve function by parsing pe exports

Disassembly:
add edx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x5c]
lea esi, [esi - 8]
push esi
push dword [ebp - 0x60]
call fcn.00403e4e
add dword [ebp - 0x48], eax
lea edi, [ebp - 0x6c]
push edi
mov edi, dword [ebp - 0x60]
push dword [edi + 0x18]
call fcn.00403e4e
add esi, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x5c]
lea edi, [edi - 0x78]
push edi
push dword [ebp - 0x6c]
call fcn.00403e4e
cmp dword [ebp - 0x54], 0x400002
jne 0x4045f9
sub eax, 0x2b
lea ecx, [edi - 1]
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x14]
cmp dword [ebp - 0x40], 1
je 0x404611
call fcn.00408428
mov eax, dword [eax + 4]
mov edx, dword [eax]
push 0xffffffffffffffff
mov esi, dword [ebp - 0xc]
lea edx, [esi + 0x688]
mov dword [ebp - 0x14], edx
xor edi, dword [ebp - 0x74]
or esi, ecx
mov esi, 0x6cd2d0b9
mov esi, eax
add dword [ebp - 0x48], esi
cmp dword [ebp - 0x40], 0x400002
jne 0x404644
push dword [ecx + 0x1c]
call dword [0x41a084]
mov ecx, dword [ecx + 0x4c]
mov ebx, dword [ebp - 0x70]
mov esi, dword [ebp - 0xc]
lea ebx, [esi + 0x588]
mov dword [ebp - 0x70], ebx
jmp 0x404791
call fcn.0040dce6
mov ebx, dword [ebp - 0xc]
push dword [ebx + 0xfb4]
cmp dword [ebp - 0x40], 1
je 0x404694
je 0x404672
mov dword [ecx], eax
cmp eax, 0x114
jb 0x404629
pop dword [ebp - 0x38]
add ecx, 0x2488
and edx, ecx
lea ecx, [ebp - 0x38]
push ecx
mov ecx, dword [ebp - 0x14]
push dword [ecx]
call fcn.00403f5c
and edx, dword [ebp - 0x34]
add dword [ebp - 0x18], eax
add ebx, 0xfbba
push dword [ebp - 0x38]
add edx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x5c]
add dword [ebp - 0x54], 0
je 0x4046d5
push dword [edx - 0x78]
cmp dword [ebp - 0x54], 0x400002
jne 0x4046fc
mov ecx, dword [ebx + 0x20]
call 0x40fa57
mov ecx, dword [ebx + 0x1c]
call 0x40c47e
mov ecx, dword [ebx + 0x18]
call 0x404edf
call fcn.00416fa5
cmp dword [ebp - 0x40], 0x400002
jne 0x404727
mov dword [esi + 0x14], 0x426020
call fcn.0041297d
test eax, eax
jge 0x4046ef
mov byte [0x42ba9c], 1
mov ecx, dword [ebp + 0x74]
mov edx, dword [ebp - 0x6c]
sub eax, dword [ebp - 0x1c]
add dword [ebp - 0x2c], 0x3f
or dword [ebp - 0x6c], edx
je 0x40478c
cmp dword [ebp - 0x40], 1
je 0x40474e
or al, 0x8b
push cs
or ecx, dword [esi + 4]
jne 0x4046f7
push dword [ebp - 0x70]
push dword [ebp - 0x6c]
call fcn.00403e4e
add dword [ebp - 0x70], 4
xor edx, ebx
cmp dword [ebp - 0x40], 0x400002
jne 0x40477a
jne 0x404784
cmp cx, 0x20
je 0x404776
cmp cx, 9
add dword [ebp - 0x14], 4
and eax, dword [ebp - 0x74]
add ebx, dword [ebp - 0x68]
jmp 0x404791
jmp 0x40526c
mov edx, dword [ebp - 0x14]
cmp dword [edx], 0
jne 0x404677
or word [ebp - 0x28], 0x532
mov ecx, dword [ebp - 0x6c]
mov edi, dword [ebp - 0xc]
or edx, dword [ebp - 0x20]
lea ecx, [edi + 0xc20]
mov dword [ebp - 0x6c], ecx
add esi, edx
or dword [ebp - 0x18], edi
add ecx, esi
push dword [ebp - 0x6c]
and edx, esi
cmp dword [ebp - 0x54], 0x400002
jne 0x4047d3
add byte [eax], al
add byte [eax], al
add byte [eax], al
push dword [ebp - 0xc]
call fcn.00412e09
add eax, dword [ebp - 0x50]
xor word [ebp - 0x64], 0xe9a
mov esi, dword [ebp - 0xc]
lea esi, [esi + 0x98]
push esi
push dword [ebp - 0x6c]
call fcn.00403e4e
push dword [ebp - 0xc]
call fcn.00412974
mov dword [ebp - 0x58], edx
and esi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x5c]
lea eax, [eax - 0x8c]
push eax
push dword [ebp - 0x38]
call fcn.00403e4e
cmp dword [ebp - 0x40], 1
je 0x404829
lea ecx, [esp + 0x18]
call 0x411876
push eax
mov ecx, dword [ebp - 0xc]
add dword [ebp - 0x74], 0x4c4
cmp dword [ebp - 0x54], 0x19
jne 0x40484a
jne 0x415e0f
xor edi, edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], ebx
cmp dword [ecx], 0
jne 0x40534b
push dword [ebp - 0xc]
push dword [ebp - 0x6c]
call fcn.00403ed7
mov eax, dword fs:[0x30]
mov dword [ebp - 0x6c], eax
sub edx, dword [ebp - 0x50]
and esi, edi
lea esi, [ebp - 0x60]
push esi
mov esi, dword [ebp - 0x6c]
push dword [esi + 0xc]
call fcn.00403e4e
mov dword [ebp - 0x1c], ebx
lea eax, [ebp - 0x60]
push eax
mov eax, dword [ebp - 0x60]
push dword [eax + 0xc]
call fcn.00403e4e
or esi, dword [ebp - 0x48]
and dword [ebp - 0x28], 0xaf3
and dword [ebp - 0x48], ecx
add dword [ebp - 0x10], 0x1a
mov ebx, dword [ebp - 0x60]
xor edi, dword [ebp - 0x44]
mov edi, dword [ebp - 0x60]
add dword [ebp - 0x68], 0xffffffb1
add ecx, 0x2c9f
mov ecx, edx
lea ebx, [edi + 0x24]
mov dword [ebp - 0x60], ebx
lea esi, [ebp - 0x38]
push esi
mov esi, dword [ebp - 0x60]
push dword [esi]
call fcn.00403e4e
add edi, 0x1204
mov esi, 0xffff
and dword [ebp - 0x38], esi
add eax, dword [ebp - 0x58]
add dword [ebp - 0x54], 0
je 0x4048e5
shl ebx, 0x10
push esi
push dword [ebp - 0x38]
add esi, ebx
mov esi, 0x98cfd73e
mov esi, edi
mov edi, dword [ebp - 0x60]
xor ebx, dword [ebp - 0x64]
cmp dword [ebp - 0x40], 0x400002
jne 0x404906
pop edi
inc eax
pop esi
push dword [edi + 4]
or ecx, eax
xor word [ebp - 0x4c], 0x9fc
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x58], 0x955
mov edx, dword [ebp - 0xc]
cmp dword [ebp - 0x54], 0xffffffdb
jne 0x40492d
lea ecx, [edx + 0xa4]
mov dword [ebp - 0x6c], ecx
add edi, 0x618f
add edx, eax
cmp dword [ebp - 0x54], 0
je 0x40494c
push 0x41a270
push dword [ebp - 0x6c]
or edx, eax
sub ebx, dword [ebp - 0x1c]
call fcn.004177d4
and dword [ebp - 0x74], 0xffffffe9
push 0xffffffff
sub edx, dword [ebp - 0x4c]
and eax, dword [ebp - 0x18]
push dword [ebp - 0xc]
test dword [ebp - 0x54], 0
je 0x40498f
mov eax, dword [ebp - 0x1354]
and eax, 0x800
je 0x40a9be
and byte [ebp - 0x1353], 0xf7
call fcn.0041110e
sub esi, edi
cmp dword [ebp - 0x54], 0x400002
jne 0x4049b1
push esi
mov esi, ecx
call fcn.0040f260
test byte [esp + 8], 1
je 0x4049aa
lea eax, [ebp - 0x60]
or word [ebp - 0x74], 0xdbf
add edi, dword [ebp - 0x58]
push eax
push dword [ebp - 0x6c]
xor edi, esi
call fcn.00403e4e
test dword [ebp - 0x6c], 0x100000
je 0x404a01
add word [ebp - 0x28], 0xb71
cmp dword [ebp - 0x40], 1
je 0x4049ee
mov dword [0x41a36f], eax
cmp dword [ebp + 0xc], ebx
je 0x4049ba
mov ebx, dword [ebp - 0xc]
or dword [ebp - 0x1c], ecx
or dword [ebx + 4], 1
xor ecx, dword [ebp - 0x64]
add esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], esi
test dword [ebp - 0x6c], 0x200000
je 0x404a36
and dword [ebp - 0x10], ebx
add edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0xc]
cmp dword [ebp - 0x54], 0
je 0x404a2c
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 8]
test bl, 3
or dword [ecx + 4], 1
or dword [ebp - 0x10], edi
cmp dword [ebp - 0x54], 0xffffffc5
jne 0x404a4a
dec eax
cmp byte [eax], 0x39
je 0x404a57
inc byte [eax]
cmp byte [esi], 0x31
test dword [ebp - 0x6c], 0x1000000
je 0x404a85
add eax, 0xd257
and ecx, eax
mov ecx, edi
mov esi, dword [ebp - 0xc]
add edi, ebx
cmp dword [ebp - 0x40], 1
je 0x404a79
lea ecx, [eax + ebx*2]
push ecx
push eax
call fcn.004090f5
or dword [esi + 4], 2
add dword [ebp - 0x2c], ecx
or edi, ebx
push dword [ebp - 0xc]
call fcn.00410f48
and eax, ebx
and dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x6c]
or dword [ebp - 0x6c], ecx
je 0x404ac1
xor esi, dword [ebp - 0x58]
mov ebx, 0xff000
add dword [ebp - 0x18], edx
and dword [ebp - 0x6c], ebx
push dword [ebp - 0xc]
push dword [ebp - 0x6c]
call fcn.00403ed7
and ebx, dword [ebp - 0x24]
or esi, ebx
jmp 0x404af8
cmp dword [ebp - 0x54], 0
je 0x404ad0
je 0x40fdb0
mov ecx, 0xff000
xor ebx, dword [ebp - 0x28]
cmp dword [ebp - 0x40], 1
je 0x404ae7
and dword [ebp - 0x60], ecx
push dword [ebp - 0xc]
push dword [ebp - 0x60]
call fcn.00403ed7
mov dword [ebp - 0x18], ecx
xor dword [ebp - 0x2c], 4
mov edi, 0xf0000
cmp dword [ebp - 0x40], 0x400002
jne 0x404b18
and dword [ebp - 0x60], edi
cmp dword [ebp - 0x54], 0x400002
jne 0x404b35
mov edi, dword [eax - 0xc]
mov eax, dword [eax - 8]
sub eax, ebp
sar ebx, 1
or ecx, eax
jge 0x404b31
mov edi, dword [ebp - 0x60]
or dword [ebp - 0x60], edi
je 0x404f0f
or edi, ecx
cmp dword [ebp - 0x54], 0
je 0x404b51
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x2c]
pop edi
push 1
add edi, 0x32d7
add dword [ebp - 0x68], ebx
add ecx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x6c]
and edx, ecx
or edx, ecx
mov edx, dword [ebp - 0xc]
lea ebx, [edi]
mov ebx, edi
xor dword [ebp - 0x28], ebx
lea edi, [edx + 0x4a4]
mov dword [ebp - 0x6c], edi
xor esi, dword [ebp - 0x28]
sub ebx, dword [ebp - 0x68]
and ecx, eax
and dword [ebp - 0x18], eax
push dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x6c]
or edx, eax
add edx, 0x1378
mov edx, 0x8a0499ef
mov edx, esi
mov eax, dword [ebp - 0xc]
lea ecx, [eax + 0xddc]
mov dword [ebp - 0x6c], ecx
xor ecx, dword [ebp - 0x10]
cmp dword [ebp - 0x54], 0x1d
jne 0x404bb6
pop ecx
pop edi
push dword [ebp - 0x6c]
xor word [ebp - 0x28], 0xf94
and ecx, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x6c]
mov esi, dword [ebp - 0xc]
lea ebx, [esi + 0xd6c]
mov dword [ebp - 0x6c], ebx
lea eax, [ebx + esi*8 + 0x25]
or word [ebp - 0x28], 0xf32
push dword [ebp - 0x6c]
xor ebx, dword [ebp - 0x10]
cmp dword [ebp - 0x54], 0xfffffff6
jne 0x404c08
and byte [ebp - 0x1355], 0xfe
lea ecx, [ebp - 0x136c]
mov eax, dword [ebp - 0x1358]
and eax, 0x2000000
je 0x409676
cmp dword [ebp - 0x40], 0xffffffac
jne 0x404c29
push eax
call fcn.0040cb4c
add esp, 0x20
lea ecx, [esp + 0x418]
push ecx
lea edx, [esp + 0x214]
push dword [ebp - 0xc]
or edi, dword [ebp - 0x58]
call fcn.0040f082
add ebx, dword [ebp - 0x68]
xor eax, dword [ebp - 0x58]
sub ecx, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x6c]
or dword [ebp - 0x6c], ebx
je 0x404c79
xor dword [ebp - 0x1c], 0x8d2
mov ebx, dword [ebp - 0xc]
and esi, dword [ebp - 0x10]
cmp word [ebx + 0x4a4], 0
jne 0x404d08
cmp dword [ebp - 0x40], 1
je 0x404c79
mov eax, dword [esp + 4]
cmp dword [eax + 8], 0
push esi
push edi
jne 0x404cdd
push 0x1a
xor dword [ebp - 0x68], 0xfffffffc
cmp dword [ebp - 0x54], 0x400002
jne 0x404c97
push ecx
push 0x10
call 0x40595e
pop ecx
mov ebx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0xc]
cmp dword [ebp - 0x40], 1
je 0x404cad
test dx, dx
jne 0x404c8f
xor eax, eax
lea ebx, [ecx + 0xcc4]
mov dword [ebp - 0x6c], ebx
and dword [ebp - 0x28], edi
and dword [ebp - 0x4c], ebx
push dword [ebp - 0x6c]
add dword [ebp - 0x68], edx
xor eax, dword [ebp - 0x50]
mov esi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0xc]
xor edi, dword [ebp - 0x28]
and ebx, dword [ebp - 0x50]
lea esi, [ecx + 0x4a4]
mov dword [ebp - 0x6c], esi
xor ecx, dword [ebp - 0x74]
add dword [ebp - 0x48], 0xffffffde
add edx, dword [ebp - 0x74]
push dword [ebp - 0x6c]
sub edx, ebx
xor ecx, esi
call fcn.004177d4
xor word [ebp - 0x50], 0x755
cmp dword [ebp - 0x40], 0x400002
jne 0x404d08
mul dword [esp + 0x10]
add edx, ecx
cmp dword [ebp - 0x40], 1
je 0x404d24
cmp dword [0x41a502], ebx
je 0x404d58
push 0x41a1cf
push 0x41a4a0
push edi
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0xc]
cmp dword [ebp - 0x40], 1
je 0x404d3e
test eax, eax
je 0x404d9d
mov ecx, dword [esi - 0xc]
test ecx, ecx
jl 0x404db0
lea ecx, [edx + 0x4a4]
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0x54], 0x400002
jne 0x404d5c
call fcn.004052cc
pop ecx
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x40], 0x13
jne 0x404d67
pop esi
pop ebx
push dword [ebp - 0x6c]
add dword [ebp - 0x48], 0x325
mov ecx, edi
push dword [ebp - 0xc]
call fcn.0040fcca
mov ecx, dword [ebp - 0x6c]
mov byte [ebp - 0x34], 0x98
mov dword [ebp - 0x48], ecx
or dword [ebp - 0x6c], ecx
je 0x404eee
xor dword [ebp - 0x74], ebx
add dword [ebp - 0x28], edi
lea ecx, [ebp - 0x38]
lea ebx, [ebx + 0xb81]
or dword [ebp - 0x28], 0x8df
push ecx
xor ebx, dword [ebp - 0x10]
push dword [ebp - 0x6c]
call fcn.00403e4e
add word [ebp - 0x34], 0xac7
and word [ebp - 0x50], 0x63
mov eax, dword fs:[0x30]
mov dword [ebp - 0x6c], eax
mov ecx, edi
lea edx, [ebp - 0x60]
push edx
mov edx, dword [ebp - 0x6c]
push dword [edx + 0xc]
call fcn.00403e4e
cmp dword [ebp - 0x54], 0x400002
jne 0x404df2
push eax
call fcn.00404239
mov edi, eax
lea eax, [ebp - 0x80]
sub eax, 0x3b
push 3
lea esi, [ebp - 0x60]
push esi
mov esi, dword [ebp - 0x60]
push dword [esi + 0xc]
call fcn.00403e4e
or ebx, dword [ebp - 0x28]
or dword [ebp - 0x34], 0x1db
mov ecx, dword [ebp - 0x60]
and ebx, edx
mov esi, dword [ebp - 0x60]
test dword [ebp - 0x54], 0
je 0x404e31
lea eax, [ebp + 0x184]
push eax
push dword [esi + 0x40]
call dword [0x41a128]
test eax, eax
lea ecx, [esi + 0x24]
mov dword [ebp - 0x60], ecx
lea ebx, [ebp - 0x60]
push ebx
mov ebx, dword [ebp - 0x60]
push dword [ebx + 4]
call fcn.00403e4e
add dword [ebp - 0x24], 0xffffff83
push dword [ebp - 0x60]
push dword [ebp - 0x38]
push dword [ebp - 0xc]
call fcn.0041045a
xor edi, eax
or esi, dword [ebp - 0x48]
cmp dword [ebp - 0x6c], 1
jne 0x404ec9
push dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x60
jne 0x404e7c
cmp ebx, dword [ebp - 4]
push 0xffffffff
xor ebx, dword [ebp - 0x34]
add dword [ebp - 0x54], 0
je 0x404e9c
push dword [ebp - 4]
call dword [0x41a090]
mov edx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 1
je 0x404eb3
test eax, eax
je 0x404f00
cmp eax, 0xe002
je 0x404e93
mov esi, dword [ebp - 0xc]
add esi, 0x5c8
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
jmp 0x404f0f
mov edi, dword [ebp - 0xc]
or eax, dword [ebp - 0x50]
or dword [edi + 4], 4
cmp dword [ebp - 0x40], 0x2f
jne 0x404ee9
jne 0x404f5d
cmp dword [esi + 0x1c], eax
je 0x404ee1
mov ecx, dword [esi + 0x1c]
jmp 0x404f0f
xor dword [ebp - 0x24], ebx
cmp dword [ebp - 0x40], 1
je 0x404efd
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0xc]
sub ecx, dword [ebp - 0x24]
add ebx, ecx
or dword [eax + 4], 4
add eax, dword [ebp - 0x68]
and ecx, dword [ebp - 0x28]
xor edx, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x5c]
and esi, dword [ebp - 0x1c]
or dword [ebp - 0x20], ecx
mov dword [ebx - 0x94], 0x400
cmp dword [ebp - 0x54], 0
je 0x404f39
sete al
push 0x41a25f
mov edx, dword [ebp - 0x5c]
mov dword [edx - 0x90], 0
cmp dword [ebp - 0x54], 0
je 0x404f60
mov dword [ebp - 0x1c], esi
push 4
cmp dword [ebp - 0x40], 1
je 0x404f7f
push 0x1c
push 0x41a493
push 0x41a57a
push 0x41a541
mov word [ebp - 0x28], 0x251
push 0x3000
and edi, dword [ebp - 0x74]
xor eax, dword [ebp - 0x2c]
lea ebx, [edi]
mov ecx, dword [ebp - 0x6c]
or ebx, dword [ebp - 0x74]
or eax, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x5c]
add edi, dword [ebp - 0x58]
cmp dword [ebp - 0x40], 1
je 0x404fb0
pop ecx
je 0x404f70
mov eax, dword [esi + 8]
lea ecx, [ebx - 0x94]
mov dword [ebp - 0x6c], ecx
lea edx, [edi + esi*2 + 0x1d88]
and ebx, edi
push dword [ebp - 0x6c]
add dword [ebp - 0x4c], 0x43
and edi, edx
push 0
and eax, edi
and edi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
lea edx, [ecx - 0x90]
mov dword [ebp - 0x6c], edx
or dword [ebp - 0x2c], edi
cmp dword [ebp - 0x54], 0x400002
jne 0x404ff4
push dword [ebp - 0x6c]
mov ebx, eax
mov ebx, 0x84fe8591
mov ebx, edi
and eax, dword [ebp - 0x20]
push 0xffffffff
add eax, dword [ebp - 0x64]
cmp dword [ebp - 0x40], 1
je 0x405018
lea ecx, [esp + 0x38]
mov edx, dword [ebp - 0x60]
mov edx, dword [ebp - 0xc]
add edx, 0x59c
call dword [edx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
and edx, dword [ebp - 0x10]
and dword [ebp - 0x4c], ebx
mov dword [ebp - 0x60], 0x7ffe0030
xor eax, ecx
xor ecx, dword [ebp - 0x68]
add dword [ebp - 0x54], 0
je 0x405056
je 0x405069
lea ecx, [esp + 0x18]
and ebx, 0x41a268
push dword [ebp - 0x60]
mov esi, dword [ebp - 0x5c]
sub edi, ebx
push dword [esi - 0x90]
call fcn.004124ee
add ecx, dword [ebp - 0x28]
add dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x5c]
xor esi, edx
cmp dword [edi - 0x8c], 0
jne 0x4050b1
and dword [ebp - 0x44], ebx
and esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0xc]
cmp dword [ebp - 0x40], 1
je 0x4050a1
mov dword [ebp - 0x10], esi
call 0x405f30
lea edi, [esi + 0x10]
lea eax, [ecx + 0xce4]
mov dword [ebp - 0x60], eax
jmp 0x4050cd
mov dword [ebp - 0x20], 0x757
mov eax, dword [ebp - 0x60]
xor ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0xc]
lea eax, [edx + 0xd14]
mov dword [ebp - 0x60], eax
sub edx, dword [ebp - 0x50]
cmp dword [ebp - 0x40], 0x38
jne 0x4050dc
pop esi
je 0x40510b
cmp eax, 0x10
push dword [ebp - 0x60]
xor dword [ebp - 0x34], 0x33f
mov eax, dword [ebp - 0x5c]
xor edx, ecx
cmp dword [ebp - 0x40], 1
je 0x405105
push dword [eax - 0x90]
xor dword [ebp - 0x44], 0x5f
call fcn.004124ee
cmp dword [ebp - 0x40], 1
je 0x405123
push dword [ebp - 0xc]
mov esi, dword [ebp - 0x5c]
mov word [ebp - 0x10], 0xfe4
add ebx, dword [ebp - 0x1c]
push dword [esi - 0x98]
add edx, esi
mov ecx, dword [ebp - 0x5c]
xor dword [ebp - 0x20], esi
push dword [ecx - 0x90]
xor ebx, dword [ebp - 0x28]
mov eax, edi
call fcn.004148a0
test dword [ebp - 0x54], 0
je 0x40516a
pop esi
pop ebp
je 0x405138
or eax, 0x40000
xor eax, eax
test bl, 0x10
mov edi, dword [ebp - 0x5c]
mov dword [edi - 0x94], 0
cmp dword [ebp - 0x40], 1
je 0x405197
test bh, 0x20
je 0x4051e4
lea ecx, [esp + 0x18]
and ebx, str._VWt
call 0x40b20e
test bh, 0x10
push 0x8000
add esi, 0xb319
add ebx, 0x11b1
mov ecx, dword [ebp - 0x6c]
lea edx, [esi + ecx*2 - 0x19]
mov eax, dword [ebp - 0x5c]
sub edi, dword [ebp - 0x20]
lea ecx, [eax - 0x94]
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0x40], 1
je 0x4051cd
lea ecx, [ebp - 0x135c]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x40], 1
je 0x4051ec
movzx eax, word [0x42e160]
push eax
push dword [ebp - 0x6c]
add ecx, 0xa0d3
or eax, ecx
mov edi, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 0xffffff8d
jne 0x40520f
dec esi
lea eax, [ebp + 0x1d3]
sub eax, esi
lea edi, [edx - 0x90]
mov dword [ebp - 0x6c], edi
and dword [ebp - 0x64], ecx
add esi, 0x8e7c
mov esi, ecx
add ebx, esi
add ecx, 0x159e
push dword [ebp - 0x6c]
lea edx, [edi]
cmp dword [ebp - 0x40], 1
je 0x40523e
mov eax, dword [ecx + 0x24]
mov ecx, dword [eax]
push 0xffffffff
add edx, ecx
or eax, dword [ebp - 0x58]
cmp dword [ebp - 0x40], 1
je 0x405252
inc edi
mov edx, dword [ebp - 0x60]
or edi, dword [ebp - 0x10]
xor dword [ebp - 0x48], eax
mov esi, dword [ebp - 0xc]
add esi, 0x5a0
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
lea edx, [ebp - 0x60]
cmp dword [ebp - 0x54], 0
je 0x40528a
inc dword [esi]
or dword [ebp - 4], 0xffffffff
call 0x407d70
mov eax, esi
call fcn.0040a058
push edx
mov dword [ebp - 0x20], edx
push dword [ebp - 0xc]
cmp dword [ebp - 0x40], 1
je 0x4052a3
push edi
call 0x40d098
push dword [esi + 0x18]
call fcn.00403e4e
xor dword [ebp - 0x1c], edx
cmp dword [ebp - 0x40], 0x1e
jne 0x4052c0
mov dword [ebp - 0x5c], 1
xor esi, esi
movsx ecx, bl
pop dword [ebp - 0x70]
cmp dword [ebp - 0x54], 7
jne 0x4052d0
pop dword [ebp - 0x14]
sub esi, edi
xor ecx, dword [ebp - 0x1c]
cmp dword [ebp - 0x40], 1
je 0x4052f3
pop dword [ebp - 0xc]
lea eax, [ebp - 0x6c]
push eax
mov eax, dword [ebp - 0x60]
push dword [eax + 0x20]
call fcn.00403e4e
xor word [ebp - 0x64], 0xd7a
lea esi, [ebp - 0x6c]
push esi
mov esi, dword [ebp - 0x60]
push dword [esi + 0x38]
call fcn.00403ed7
lea ecx, [ebp - 0x14]
push ecx
mov ecx, dword [ebp - 0x6c]
push dword [ecx]
call fcn.00403e4e
or byte [eax + 0x42e301], 8
inc eax
lea edi, [ebp - 0x60]
push edi
mov edi, dword [ebp - 0x60]
push dword [edi + 0x3c]
call fcn.00403ed7
xor word [ebp - 0x10], 0x345
lea ebx, [ebp - 0x14]
push ebx
mov ebx, dword [ebp - 0x60]
push dword [ebx + 0x80]
call fcn.00403e4e
xor word [ebp - 0x44], 0xa08
or eax, ebx
mov esi, dword [ebp - 0x14]
or dword [ebp - 0x14], esi
je 0x406de0
add eax, dword [ebp - 0x28]
lea edi, [ebp - 0x14]
push edi
mov edi, dword [ebp - 0x5c]
push dword [edi + 0xc]
call fcn.00403ed7
xor dword [ebp - 0x20], 0xffffffab
sub edi, ebx
cmp dword [ebp - 0x54], 0x7d
jne 0x4069e3
mov dword [ebp - 0x28], eax
mov edx, dword [ecx + 0x10]
mov dword [ebp - 0x2c], edx
xor edx, edx
mov dword [ebp - 0x34], edx
cmp edx, dword [ecx + 0xc]
mov esi, dword [ebp - 0x14]
xor edx, dword [ebp - 0x48]
cmp dword [esi], 0
je 0x406de0
jmp 0x406c32
add esi, 2
push dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x400002
jne 0x409648
push 4
push 0x41a449
push 0x41a326
mov esi, dword [ebp - 0x6c]
or ebx, edx
or word [ebp - 0x4c], 0xd89
mov edx, dword [ebp - 0x5c]
or ebx, dword [ebp - 0x44]
lea esi, [edx - 0x50]
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x28], edi
and ecx, edx
mov ecx, edi
cmp dword [ebp - 0x40], 1
je 0x40967d
inc eax
lea eax, [ecx + 0x84]
cmp dword [eax], 0
je 0x40964d
mov eax, dword [eax]
push dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x400002
jne 0x409692
jne 0x40962a
xor eax, eax
pop edi
pop esi
test dword [ebp - 0x54], 0
je 0x40969f
push esi
push 0
or edx, dword [ebp - 0x34]
and eax, dword [ebp - 0x58]
cmp dword [ebp - 0x40], 1
je 0x4096cb
and ebx, 0x41a3d0
call fcn.00405705
mov al, byte [esp + 0x13]
test al, al
je 0x40970e
mov edi, 0x41a420
push 0
sub edi, edx
and edx, dword [ebp - 0x50]
or ebx, esi
and ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0xc]
add ecx, 0x644
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add dword [ebp - 0x74], 0xffffffb2
cmp dword [ebp - 0x54], 0x400002
jne 0x409711
mov byte [ebp - 0x53], 0
call 0x40cb66
add esp, 0xc
test eax, eax
jge 0x40971f
mov dword [ebp - 0x5c], esi
xor ebx, edx
cmp dword [ebp - 0x40], 0x400002
jne 0x409728
push dword [ebp + 0x18]
call dword [0x41a044]
mov edx, dword [ebp - 0x6c]
xor dword [ebp - 0x44], edi
or dword [ebp - 0x6c], edx
jne 0x4098bf
cmp dword [ebp - 0x40], 0x400002
jne 0x40974b
ja 0x40696e
push 4
mov eax, 8
add edx, esi
mov edx, 0x3ca6e365
mov edx, ebx
xor dword [ebp - 0x70], eax
sub edx, ecx
or edi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x5c]
lea ecx, [ecx - 0xac]
push ecx
push dword [ebp - 0x70]
call fcn.00403e4e
add esi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x14]
and dword [ebp - 0x50], ebx
push dword [eax + 0xc]
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x34], ebx
push dword [ebx - 0x48]
call fcn.00416fa5
xor dword [ebp - 0x20], 0xffffffae
cmp dword [ebp - 0x40], 1
je 0x40979d
pop esi
cmp eax, esi
xor word [ebp - 0x68], 0xebe
mov edi, dword [ebp - 0x6c]
or ebx, edi
test dword [ebp - 0x54], 0
je 0x4097b6
mov ebx, eax
or dword [ebp - 0x6c], edi
je 0x40984b
or ebx, dword [ebp - 0x74]
sub esi, eax
mov eax, 0x10
and esi, dword [ebp - 0x24]
xor dword [ebp - 0x70], eax
mov esi, dword [ebp - 0x5c]
lea esi, [esi - 0xac]
push esi
push dword [ebp - 0x70]
call fcn.00403e4e
push 0x42851289
add ecx, dword [ebp - 0x74]
and ecx, dword [ebp - 0x2c]
cmp dword [ebp - 0x54], 0x400002
jne 0x40980d
test eax, eax
je 0x409842
mov eax, dword [ebp - 0x30c]
mov ecx, dword [ebp - 0x308]
shld ecx, eax, 4
mov edx, dword [ebp - 0x60]
add edi, 0xcbc
xor ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x400002
jne 0x409829
push eax
call edx
mov dword [ebp - 0x6c], eax
xor ecx, dword [ebp - 0x10]
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x40], 0x400002
jne 0x409842
je 0x4097f9
add eax, dword [ebp - 0x28]
add esp, 4
mov edi, dword [ebp - 0x5c]
add dword [ebp - 0x48], 0xffffff8c
push dword [edi - 0x48]
cmp dword [ebp - 0x54], 0x400002
jne 0x409869
mov edx, dword [ebp - 0x60]
xor ebx, ecx
and dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0xc]
add ecx, 0x648
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
and edi, dword [ebp - 0x48]
sub edx, eax
mov ecx, dword [ebp - 0x6c]
sub edx, dword [ebp - 0x24]
or dword [ebp - 0x6c], ecx
jne 0x4098bf
mov word [ebp - 0x58], 0xfdb
mov edx, 0x20
xor dword [ebp - 0x70], edx
add edi, dword [ebp - 0x24]
add edi, 0x412a
mov ecx, dword [ebp - 0x5c]
lea ecx, [ecx - 0xac]
push ecx
push dword [ebp - 0x70]
call fcn.00403e4e
mov ecx, 0x40
and eax, ebx
xor dword [ebp - 0x70], ecx
mov edx, dword [ebp - 0x5c]
lea edx, [edx - 0xac]
push edx
push dword [ebp - 0x70]
call fcn.00403e4e
or edx, dword [ebp - 0x64]
add dword [ebp - 0x54], 0
je 0x4098ee
and byte [ebp - 0x1355], 0xfe
jmp 0x4098f8
or dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ecx - 4], 0
cmp dword [ebp - 0x54], 0x400002
jne 0x40fd8e
mov word [ebp - 0x50], 0x20
mov dword [ebp - 0x44], 1
mov ebx, dword [ebp - 0x48]
sub ebx, dword [ebp - 0x44]
sub ebx, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x5c]
lea ecx, [ecx - 8]
push ecx
push dword [ebp - 0x14]
call fcn.00403e4e
or esi, edi
mov byte [ebp - 0x28], 0xcb
push 4
mov word [ebp - 0x58], 0x739
and esi, ecx
sub ebx, dword [ebp - 0x74]
push 0x3000
or ecx, edi
and edx, dword [ebp - 0x68]
mov dword [ebp - 0x1c], 0x4a1
mov edi, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x400002
jne 0x40fdea
jne 0x40fdb0
or ax, 0xffff
mov ecx, dword [0x41a572]
mov byte [ebp - 4], al
movzx eax, al
test byte [ecx + eax*2 + 1], 0x80
mov edx, dword [ebp - 0x5c]
lea edi, [edx - 8]
mov dword [ebp - 0x6c], edi
and edi, dword [ebp - 0x58]
or dword [ebp - 0x18], ebx
push dword [ebp - 0x6c]
xor edi, dword [ebp - 0x28]
push 0
sub edi, ecx
cmp dword [ebp - 0x40], 0x400002
jne 0x40fe1f
setl cl
push 8
mov eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
xor ebx, dword [ebp - 0x2c]
cmp dword [ebp - 0x54], 0
je 0x40fe3d
push ebx
push 0xffffffffffffffff
push 0x41a343
push 0
push 0
lea eax, [ecx - 4]
mov dword [ebp - 0x6c], eax
sub ebx, dword [ebp - 0x28]
push dword [ebp - 0x6c]
add dword [ebp - 0x54], 0
je 0x40fe59
jne 0x40fe1a
push ebx
push ebx
xor esi, esi
inc esi
push 0xffffffff
and ebx, edi
test dword [ebp - 0x54], 0
je 0x40fe7b
add eax, dword [ebp - 0x28]
mov ecx, eax
cmp esi, dword [ebp - 0x14]
jge fcn.0040fe12
mov esi, dword [ebp - 0x14]
add ebx, esi
mov edx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 0xffffffad
jne 0x40fe97
je 0x40ff03
cmp dword [ebp - 0x1c], edi
jne fcn.0040fe12
mov eax, dword [0x41a47b]
mov byte [eax + 0x3f], 0
mov ecx, dword [ebp - 0xc]
add ecx, 0x59c
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add esi, dword [ebp - 0x24]
cmp dword [ebp - 0x54], 0x51
jne 0x40feb9
add esp, 0xc
mov eax, dword [eax]
cmp dword [ebp - 0x40], 1
je 0x40fecf
jne 0x40ff16
mov ecx, dword [ebp + 0x3e4]
cmp word [ecx + 2], 0x32
push 0
or eax, edx
and dword [ebp - 0x44], edi
mov esi, dword [ebp - 0x5c]
and eax, dword [ebp - 0x50]
sub edx, dword [ebp - 0x48]
push dword [esi - 8]
add dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x5c]
add ebx, dword [ebp - 0x48]
or edx, dword [ebp - 0x74]
push dword [ecx - 4]
sub ebx, dword [ebp - 0x74]
test dword [ebp - 0x54], 0
je 0x40ff11
push ebp
lea ebp, [esp - 0x598]
sub esp, 0x41a377
push 5
lea edi, [esi + ebx + 0xbc7]
mov edx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 0x400002
jne 0x40ff41
lea ecx, [esp + 0x18]
call fcn.00412caf
push eax
lea eax, [ebp + 0xa0]
push eax
lea edx, [esp + 0x20]
mov edi, dword [ebp - 0xc]
add edi, 0x5e4
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
and dword [ebp - 0x58], ecx
or edx, dword [ebp - 0x18]
and edx, eax
cmp dword [ebp - 0x6c], 0xc0000004
jne 0x410097
or ebx, dword [ebp - 0x24]
cmp dword [ebp - 0x54], 0x400002
jne 0x40ff81
jbe 0x40ffbf
mov eax, dword [ebp - 4]
cmp eax, dword [ebp + 8]
mov edx, dword [ebp - 0x5c]
mov dword [edx - 8], 0
sub eax, ecx
push 0x8000
and edi, dword [ebp - 0x68]
cmp dword [ebp - 0x40], 1
je 0x40ffae
pop esi
jmp dword [eax + 0x60]
add dword [ebp - 0x64], 0x2c
lea edx, [ebx + esi*8 + 0x55]
mov ebx, dword [ebp - 0x6c]
mov esi, dword [ebp - 0x5c]
add eax, dword [ebp - 0x18]
xor dword [ebp - 0x18], edi
lea ebx, [esi - 8]
mov dword [ebp - 0x6c], ebx
add dword [ebp - 0x54], 0
je 0x40ffe7
je 0x410005
mov byte [esp + 0x13], 1
mov edi, 0x41a221
mov byte [esp + 0x13], 0
test bl, 2
je 0x410041
push dword [ebp - 0x6c]
add dword [ebp - 0x54], 0
je 0x40fffd
lea edx, [edx]
mov esi, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x5c]
and edi, edx
mov dword [ebp - 0x10], 0xbe0
lea esi, [edx - 4]
mov dword [ebp - 0x6c], esi
sub ebx, dword [ebp - 0x50]
push dword [ebp - 0x6c]
add edi, dword [ebp - 0x10]
cmp dword [ebp - 0x40], 1
je 0x410037
and eax, edx
push 0xffffffff
or dword [ebp - 0x50], eax
or ebx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x60]
add edi, dword [ebp - 0x68]
mov esi, dword [ebp - 0xc]
add esi, 0x5a0
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add dword [ebp - 0x14], 0xa000
cmp dword [ebp - 0x40], 0xffffffde
jne 0x410076
mov dword [ebp - 0x6c], 0xc0000004
cmp dword [ebp - 0x40], 1
je 0x41008f
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4100b6
jmp 0x4100b8
mov ecx, dword [ebp - 0x6c]
or dword [ebp - 0x6c], ecx
je 0x4100b8
jmp 0x4103fc
mov edi, eax
cmp dword [ebp - 0x54], 0x2d
jne 0x4100e5
cmp dword [ebp - 0x6c], 0xc0000004
je 0x40fd5c
xor dword [ebp - 0x34], eax
lea edi, [ebp - 0x14]
push edi
mov edi, dword [ebp - 0x5c]
push dword [edi - 4]
call fcn.00403e4e
mov ebx, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x4c]
push dword [ebx + 0xc]
cmp dword [ebp - 0x54], 0x400002
jne 0x41012b
cmp edi, ebx
je 0x4100b6
mov dword [edi + 4], ebx
mov dword [edi + 0xc], ebx
mov dword [edi + 8], ebx
mov dword [edi], ebx
mov edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
add eax, ecx
lea edx, [ecx - 0x10]
mov dword [ebp - 0x6c], edx
sub eax, ebx
add dword [ebp - 0x20], edx
xor ebx, eax
push dword [ebp - 0x6c]
xor eax, dword [ebp - 0x64]
mov byte [ebp - 0x50], 2
xor ecx, dword [ebp - 0x64]
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0xc]
add ecx, 0x5ac
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add ecx, dword [ebp - 0x1c]
sub edi, dword [ebp - 0x1c]
sub edx, eax
and eax, dword [ebp - 0x10]
push 1
add dword [ebp - 0x68], ebx
cmp dword [ebp - 0x40], 0x37
jne 0x410180
add esi, 4
mov esi, dword [ebp - 0x6c]
and ebx, esi
or ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x14]
lea esi, [edx + 0x38]
mov dword [ebp - 0x6c], esi
and eax, dword [ebp - 0x24]
xor dword [ebp - 0x24], edx
push dword [ebp - 0x6c]
xor dword [ebp - 0x64], 0x75f
sub edi, edx
add dword [ebp - 0x54], 0
je 0x4101b0
pop esi
pop ebx
pop ebp
push esi
mov edx, dword [ebp - 0x6c]
or word [ebp - 0x2c], 0xdaa
cmp dword [ebp - 0x40], 1
je 0x4101c7
movsd dword es:[edi], dword [esi]
push dword [ebp + 0x10]
movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x5c]
or ebx, dword [ebp - 0x50]
lea edx, [ecx - 0x10]
mov dword [ebp - 0x6c], edx
lea ebx, [ebx - 3]
add ebx, eax
or esi, eax
mov dword [ebp - 0x74], ecx
push dword [ebp - 0x6c]
or eax, ebx
or ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x60]
and dword [ebp - 0x18], esi
or eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0xc]
add edi, 0x5f0
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add esi, dword [ebp - 0x18]
xor eax, ecx
cmp dword [ebp - 0x40], 1
je 0x41020f
test eax, eax
mov eax, dword [ebp - 0x6c]
add edi, 0xe9bd
xor edi, dword [ebp - 0x10]
or dword [ebp - 0x6c], eax
jne 0x4102fa
add eax, dword [ebp - 0x2c]
and ecx, esi
mov edi, dword [ebp - 0x14]
push dword [edi + 0x44]
xor dword [ebp - 0x48], 0xe8c
and ecx, dword [ebp - 0x10]
xor dword [ebp - 0x24], ecx
and dword [ebp - 0x58], 0xa36
push dword [ebp - 0xc]
call fcn.0041110e
mov edx, 0xf00000
and dword [ebp - 0x6c], edx
and edx, esi
mov edi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x68]
and dword [ebp - 0x68], 0xcfe
cmp edi, dword [ecx - 0x2c]
mov dword [ebp - 0x6c], edi
jbe 0x410281
cmp dword [ebp - 0x6c], 0xf00000
jne 0x4102cc
mov byte [ebp - 0x1c], 0xd6
mov word [ebp - 0x10], 0x550
mov esi, dword [ebp - 0x6c]
xor edx, dword [ebp - 0x44]
or dword [ebp - 0x6c], esi
jne 0x4102fa
or eax, dword [ebp - 0x4c]
xor word [ebp - 0x74], 0x276
mov eax, dword [ebp - 0x5c]
cmp dword [eax - 0x2c], 0
jne 0x4102fa
or dword [ebp - 0x64], edx
cmp dword [ebp - 0x40], 0x40
jne 0x4102cc
je 0x410281
cmp cl, 0xa
je 0x4102c6
cmp cl, 0xd
jne 0x41029d
inc edi
mov eax, dword [ebp - 0x5c]
lea eax, [eax - 0x2c]
push eax
push dword [ebp - 0x6c]
call fcn.00403e4e
xor ebx, dword [ebp - 0x10]
lea edi, [ebp - 0x70]
push edi
mov edi, dword [ebp - 0x14]
push dword [edi + 0x44]
call fcn.00403e4e
add dword [ebp - 0x54], 0
je 0x4102fa
add byte [eax], al
add byte [eax], al
lea edx, [ebp - 0x60]
push edx
mov edx, dword [ebp - 0x14]
push dword [edx]
call fcn.00403e4e
add esi, 0x3b96
mov eax, dword [ebp - 0x60]
and edi, esi
or dword [ebp - 0x60], eax
je 0x410330
lea esi, [esi + 0xe20]
lea ecx, [ebp - 0x14]
push ecx
mov ecx, dword [ebp - 0x14]
push dword [ecx]
call fcn.00403ed7
mov ecx, dword [ebp - 0x60]
or dword [ebp - 0x60], ecx
jne 0x410167
mov ecx, dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 0x400002
jne 0x41034e
mov eax, dword [esi + 8]
mov dword [ecx - 8], 0
add ecx, edi
add dword [ebp - 0x10], eax
cmp dword [ebp - 0x54], 0
je 0x41036b
cmp dword [eax + 0x1c], esi
jne 0x410369
push 0x8000
or ebx, dword [ebp - 0x44]
cmp dword [ebp - 0x54], 0x400002
jne 0x410389
je 0x410358
test esi, esi
jne 0x408cd2
mov edi, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x5c]
lea edi, [eax - 8]
mov dword [ebp - 0x6c], edi
xor dword [ebp - 0x58], 0xffffffb5
lea ecx, [ecx + 0x52]
xor dword [ebp - 0x74], 0x11
push dword [ebp - 0x6c]
xor dword [ebp - 0x20], 0x85f
xor ecx, dword [ebp - 0x50]
and esi, eax
mov edx, dword [ebp - 0x6c]
sub esi, edx
add ecx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x34]
and ebx, ecx
lea edx, [esi - 4]
mov dword [ebp - 0x6c], edx
add dword [ebp - 0x28], 0xffffff9d
push dword [ebp - 0x6c]
lea esi, [ecx + 0x11cf]
add edx, ecx
or dword [ebp - 0x28], edi
push 0xffffffff
add ecx, edi
xor ebx, eax
or ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x60]
add esi, ecx
mov ecx, dword [ebp - 0xc]
add ecx, 0x5a0
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add esi, dword [ebp - 0x68]
lea edx, [ebp - 0x6c]
push edx
cmp dword [ebp - 0x40], 1
je 0x410419
mov ebx, dword [ebp + 8]
cmp dword [ebp - 8], 0
mov ecx, dword [edx + 8]
mov edi, dword [edx + 4]
mov dword [ecx + 4], edi
push dword [ebp - 0x70]
sub ecx, esi
call fcn.00403e4e
mov edi, dword [ebp - 0x5c]
add dword [ebp - 0x18], 0x2f
cmp dword [ebp - 0x40], 0x34
jne 0x410447
mov esp, edi
and esi, dword [ebp - 0x68]
add eax, dword [ebp - 0x18]
pop dword [ebp - 0x5c]
or esi, ebx
ret 8
or ebx, edx
cmp dword [ebp - 0x54], 0x400002
jne 0x4175ca
add al, 0x89
mov edi, dword [ebp - 0x14]
cmp dword [edi], 0
je 0x417744
lea edi, [ebp - 0x38]
push edi
mov edi, dword [ebp - 0x14]
push dword [edi + 4]
call fcn.00403e4e
add dword [ebp - 0x28], ebx
lea esi, [ecx + 0x54]
mov ebx, 8
and esi, dword [ebp - 0x10]
xor dword [ebp - 0x28], 0x75f
sub dword [ebp - 0x38], ebx
mov edi, dword [ebp - 0x38]
shr edi, 1
mov dword [ebp - 0x38], edi
lea ebx, [ebp - 0x70]
push ebx
mov ebx, dword [ebp - 0x14]
push dword [ebx]
call fcn.00403e4e
xor dword [ebp - 0x48], ecx
or eax, dword [ebp - 0x28]
lea edi, [ebp - 0x70]
push edi
mov edi, dword [ebp - 0x5c]
push dword [edi + 8]
call fcn.00403ed7
or esi, ecx
cmp dword [ebp - 0x54], 0xffffff91
jne 0x417641
mov eax, 8
and ebx, dword [ebp - 0x74]
add dword [ebp - 0x14], eax
cmp dword [ebp - 0x54], 0xffffffdb
jne 0x417662
cmp esi, eax
je 0x41765b
mov ecx, esi
call fcn.00417be5
test eax, eax
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 0xc]
mov dx, word [ebx]
mov word [ebp - 0xc], dx
xor eax, dword [ebp - 0x74]
cmp dword [ebp - 0x40], 1
je 0x41767c
push edi
mov edx, dword [ebp - 0xc]
shr edx, 0xc
mov dword [ebp - 0xc], edx
cmp dword [ebp - 0x40], 0x400002
jne 0x41769c
je 0x4045ae
inc esi
cmp esi, edx
jb 0x417629
cmp dword [ebp - 0xc], 3
je 0x4176b4
and ecx, dword [ebp - 0x4c]
jmp 0x417729
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov cx, word [esi]
mov word [ebp - 0xc], cx
sub ecx, dword [ebp - 0x2c]
cmp dword [ebp - 0x40], 1
je 0x4176d0
lea ecx, [ecx]
add dword [ebp - 0x20], 0xffffffff
or dword [ebp - 0x34], ecx
mov ebx, 0xfff
and dword [ebp - 0x58], edx
and dword [ebp - 0xc], ebx
push dword [ebp - 0x70]
cmp dword [ebp - 0x54], 0
je 0x4176fd
inc eax
mov esp, dword [ebp - 0x18]
or dword [ebp - 4], 0xffffffff
push 8
push 0x41a598
lea esi, [ebp - 0x70]
push esi
push dword [ebp - 0xc]
sub ebx, eax
and dword [ebp - 0x28], ecx
call fcn.00403ed7
add ebx, 0xa41e
push dword [ebp - 0x70]
push dword [ebp - 0x60]
call fcn.00403ed7
and dword [ebp - 0x4c], 0x5d
pop dword [ebp - 0x70]
xor eax, dword [ebp - 0x68]
add dword [ebp - 0x14], 2
sub dword [ebp - 0x38], 1
jne 0x417662
jmp 0x4175ba
and word [ebp - 0x50], 0x260
xor eax, dword [ebp - 0x74]
pop dword [ebp - 0x70]
add dword [ebp - 0x54], 0
je 0x417762
mov esi, dword [0x41a4b1]
mov dword [ebp - 0x28], eax
add ecx, 0xb42d
mov ecx, edx
pop dword [ebp - 0x14]
sub eax, dword [ebp - 0x58]
or esi, ebx
lea edi, [eax]
xor dword [ebp - 0x58], esi
pop dword [ebp - 0x60]
mov dword [ebp - 0x58], 0xea6
pop dword [ebp - 0x38]
or ecx, dword [ebp - 0x28]
or ebx, esi
or dword [ebp - 0x68], 0x59
pop dword [ebp - 0xc]
add esi, 0x7737
or dword [ebp - 0x20], esi
pop dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
mov esp, ecx
xor ebx, edi
add dword [ebp - 0x68], eax
cmp dword [ebp - 0x40], 0x400002
jne 0x4177b5
xor eax, eax
int3
pop dword [ebp - 0x5c]
or dword [ebp - 0x20], ebx
ret 0x10