Function at 0x40956e
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:
mov ecx, dword [eax + 0x10]
mov ecx, dword [ecx]
cmp ecx, dword [ebx + 4]
je 0x405f0f
mov edx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 1
je 0x405efb
call fcn.0041588d
mov dword [edx + 0xc], 3
cmp dword [ebp - 0x54], 0
je 0x405f17
inc ecx
add byte [ebp + 0x48004147], bl
inc edi
inc ecx
sub edi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x38]
add dword [ebp - 0x28], 0x40d
mov edi, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 1
je 0x405f4a
mov eax, 0x41a3c8
push dword [ebp - 0x10]
call 0x405363
mov eax, 0x41a259
mov ecx, dword [ebp - 0x10]
mov eax, 0x41a3a8
lea edx, [edi + 0x10]
mov dword [ebp - 0x38], edx
and dword [ebp - 0x64], 0x8a8
or eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x38]
add eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x54], 0xffffffec
jne 0x405f7a
add dword [ebp + 8], edi
add esp, 0xc
sub ebx, edi
je 0x405f16
mov ecx, esi
call fcn.0041413e
mov dword [ecx], 0x97946674
add word [ebp - 0x68], 0x963
lea edi, [edx]
xor eax, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x38]
mov dword [esi + 4], 0x7afb04fd
sub eax, edx
or word [ebp - 0x64], 0x7a9
mov esi, dword [ebp - 0x38]
add dword [ebp - 0x74], 0x439
lea edx, [ecx + edi*2 + 0x14]
mov dword [esi + 8], 0x208ec87d
sub edi, ebx
sub edi, ebx
mov word [ebp - 0x58], 0xda
mov ebx, dword [ebp - 0x38]
and edx, dword [ebp - 0x20]
mov dword [ebx + 0xc], 0xffd91c79
mov ecx, dword [ebp - 0x38]
or edx, ecx
mov dword [ecx + 0x10], 0x7db8195d
mov eax, dword [ebp - 0x38]
add dword [ebp - 0x64], eax
mov edi, edx
mov dword [eax + 0x14], 0
cmp dword [ebp - 0x40], 1
je 0x406001
jl 0x405fe4
mov edx, dword [ecx + 4]
cmp dword [ebp - 0x40], 0x400002
jne 0x40601b
add eax, 0xfffffff0
mov byte [esp + 0x137c], 0x35
lea ecx, [eax + 0xc]
mov edi, dword [ebp - 0x38]
xor dword [ebp - 0x18], edi
mov eax, dword [ebp - 0x60]
add ecx, ebx
mov ecx, edx
lea edi, [eax + 0x38]
mov dword [ebp - 0x38], edi
or edi, edx
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x40], 0x400002
jne 0x406044
nop
mov al, byte [esi]
mov byte [edi], al
mov dword [esi], 0x50006
lea edx, [ecx + 0x16b4]
cmp dword [ebp - 0x40], 0x15
jne 0x406066
and dword [esi + 0xc], 0
mov eax, dword [ebp - 0x1c]
call fcn.0040931e
push esi
mov edx, dword [ebp - 0x38]
xor ebx, eax
or ecx, dword [ebp - 0x10]
mov dword [edx + 4], 0x50006
xor dword [ebp - 0x50], 0xecc
lea ecx, [ecx + edi*8 + 0xd75]
cmp dword [ebp - 0x40], 1
je 0x4060a6
mov ebx, 0x41a35b
push ecx
mov dword [esp + 0x1388], ebx
call fcn.004055a7
add esp, 0xc
mov eax, dword [eax]
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 8], 0x50008
and edx, dword [ebp - 0x58]
xor dword [ebp - 0x28], 0xffffffa1
or esi, edi
mov esi, edx
mov esi, dword [ebp - 0x38]
and dword [ebp - 0x48], 0x5f
mov dword [esi + 0xc], 0x60007
mov edx, dword [ebp - 0x38]
or dword [ebp - 0x10], 0x8a5
sub esi, dword [ebp - 0x24]
mov dword [edx + 0x10], 0x90009
add dword [ebp - 0x34], ebx
mov edi, dword [ebp - 0x38]
mov dword [edi + 0x14], 0
cmp dword [ebp - 0x54], 0x400002
jne 0x406126
lea ecx, [ebp - 0x136c]
mov eax, dword [ebp - 0x1358]
and eax, 0x80000
je 0x408e8f
and byte [ebp - 0x1356], 0xf7
lea ecx, [ebp - 0x1368]
add eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0xffffff90
jne 0x40613d
push dword [esi + 0x14]
lea edi, [ebx + 0x4c]
mov ecx, edi
mov ecx, dword [ebp - 0xc]
and esi, ecx
or esi, ebx
lea eax, [ecx + 0x650]
mov dword [ebp - 0x6c], eax
mov edi, dword [ebp - 0x60]
lea edi, [edi + 0x60]
push edi
push dword [ebp - 0x6c]
call fcn.00403e4e
mov esi, dword [ebp - 0x60]
lea esi, [esi + 0x68]
push esi
push dword [ebp - 0xc]
call fcn.00403e4e
test dword [ebp - 0x54], 0
je 0x406179
cmp edi, ebx
push dword [ebp - 0x60]
call fcn.00413323
mov dword [ebp - 0x64], ecx
xor dword [ebp - 0x18], ecx
or dword [ebp - 0x34], esi
push dword [ebp - 0xc]
xor edx, dword [ebp - 0x20]
or dword [ebp - 0x50], esi
call fcn.0040c96b
lea ecx, [ebp - 0x6c]
push ecx
mov ecx, dword [ebp - 0xc]
push dword [ecx + 4]
call fcn.00403e4e
cmp dword [ebp - 0x40], 0x400002
jne 0x4061bd
pop edi
push dword [ebp + 0xc]
ja 0x4061de
lea ecx, [eax + esi*2]
push ecx
mov ecx, dword [ebp - 0x6c]
rol ecx, 0x14
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0x40], 1
je 0x4061d5
mov eax, esi
sub eax, dword [esp + 0x10]
cmp dword [ebp - 0x40], 1
je 0x4061e3
add byte [ecx + 1], al
mov eax, ebx
mov edi, dword [0x7ffe0014]
cmp dword [ebp - 0x40], 0x27
jne 0x4061f4
add byte [eax], al
add byte [eax], al
add byte [eax], al
pop dword [ebp - 0x6c]
mov eax, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x408ead
push esi
call dword [0x41a034]
test eax, eax
sub eax, dword [esp]
or dword [ebp - 0x64], ecx
mov dword [ebp - 0x6c], eax
mov edi, dword [ebp - 0x5c]
lea edi, [edi - 0xbc]
push edi
push dword [ebp - 0x6c]
call fcn.00403e4e
mov eax, dword fs:[0x30]
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x68], 0x22
or edx, dword [ebp - 0x68]
lea esi, [ebp - 0x6c]
push esi
mov esi, dword [ebp - 0x6c]
push dword [esi + 0xc]
call fcn.00403e4e
cmp dword [ebp - 0x40], 0x400002
jne 0x408f03
lea edx, [ebp - 0x6c]
push edx
mov edx, dword [ebp - 0x6c]
push dword [edx + 0xc]
call fcn.00403e4e
sub eax, ebx
sub esi, dword [ebp - 0x24]
lea edi, [ebp - 0x60]
push edi
mov edi, dword [ebp - 0x6c]
push dword [edi + 0x18]
call fcn.00403e4e
add dword [ebp - 0x54], 0
je 0x408f42
mov ecx, dword [ebp - 0x5c]
lea ecx, [ecx - 0xb4]
push ecx
push dword [ebp - 0x60]
call fcn.00403e4e
lea edx, [ebp - 0x38]
push edx
mov edx, dword [ebp - 0x6c]
push dword [edx + 0x20]
call fcn.00403e4e
mov esi, dword [ebp - 0x5c]
lea esi, [esi - 0xb8]
push esi
push dword [ebp - 0x38]
call fcn.00403e4e
lea ecx, [ebp - 0x60]
push ecx
mov ecx, dword [ebp - 0x60]
push dword [ecx + 0x3c]
call fcn.00403ed7
lea ecx, [ebp - 0x6c]
push ecx
mov ecx, dword [ebp - 0x60]
push dword [ecx + 0xc8]
call fcn.00403e4e
mov esi, dword [ebp - 0x6c]
and ecx, dword [ebp - 0x20]
or dword [ebp - 0x6c], esi
je 0x40951a
sub esi, ecx
lea eax, [ebp - 0x6c]
push eax
mov eax, dword [ebp - 0x5c]
push dword [eax - 0xb4]
call fcn.00403ed7
cmp dword [ebp - 0x40], 0x7d
jne 0x408fd1
add eax, 0x98c9
push dword [ebp - 0x6c]
or edi, dword [ebp - 0x68]
xor ecx, edi
mov ecx, 0x4159113c
mov ecx, edi
push esp
mov dword [ebp - 0x1c], edx
pop dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x6a
jne 0x409546
push ebp
push edi
lea eax, [esp + 0x14]
push eax
mov eax, dword [ebp - 0x6c]
mov dword fs:[0], eax
cmp dword [ebp - 0x40], 1
je 0x40955f
push esi
mov esi, 0x41a253
push edi
mov esi, dword [ebp - 0x5c]
cmp dword [ebp - 0x54], 0x400002
jne 0x409578
jne 0x4095e3
dec dword [ebp - 0x2e4]
jne 0x4095ad
push dword [esi - 8]
cmp dword [ebp - 0x40], 0xffffff9d
jne 0x40958f
lea eax, [ebp + 0xa0]
push eax
lea edx, [esp + 0x20]
mov esi, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 0x400002
jne 0x4095c3
lea ecx, [ebp - 0x1368]
mov eax, dword [ebp - 0x135c]
and eax, 1
je 0x412092
and dword [ebp - 0x135c], 0xfffffffe
lea ecx, [ebp - 0x136c]
lea esi, [eax - 0x50]
mov dword [ebp - 0x6c], esi
sub esi, dword [ebp - 0x50]
add dword [ebp - 0x68], 0x657
push dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x400002
jne 0x4095ef
inc eax
pop esi
mov eax, ecx
mov dword [eax], 0x424a60
xor eax, eax
push esi
mov edx, dword [ebp - 0x60]
xor eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0xc]
add esi, 0x5ac
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
sub edi, ebx
mov eax, esi
mov esi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
lea esi, [ecx - 0x48]
mov dword [ebp - 0x6c], esi
cmp dword [ebp - 0x40], 0xffffff82
jne 0x40962d
mov byte [edi], al
mov al, byte [esi + 1]
shr ecx, 2
mov byte [edi + 1], al
pop eax
test bl, 4
je 0x40cfbe
or eax, 8
test bl, 8
je 0x40cfca
push dword [ebp - 0x6c]
add eax, dword [ebp - 0x68]
push 0xf001f
sub edx, dword [ebp - 0x18]
mov dword [ebp - 0x48], eax
mov edx, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x5c]
lea edx, [ebx - 4]
mov dword [ebp - 0x6c], edx
add dword [ebp - 0x28], ebx
push dword [ebp - 0x6c]
or esi, dword [ebp - 0x4c]
lea ecx, [eax + ecx - 0x70]
mov ecx, 0x2d46c92a
mov ecx, edi
test dword [ebp - 0x54], 0
je 0x40cfa0
je 0x40f2da
push 0x18
pop eax
mov edx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 0x77
jne 0x40cfd0
lea ecx, [ebp - 0x1360]
lea ecx, [ebp - 0x136c]
lea ecx, [ebp - 0x134c]
lea ecx, [ebp - 0x1350]
lea ecx, [ebp - 0x1360]
lea ecx, [ebp - 0x136c]
mov eax, dword [ebp - 0xc]
add eax, 0x600
call dword [eax]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
or dword [ebp - 0x68], 0x898
sub edi, esi
mov ebx, dword [ebp - 0x6c]
or esi, dword [ebp - 0x18]
and dword [ebp - 0x28], 0xe
or dword [ebp - 0x6c], ebx
jne 0x40d6ec
or dword [ebp - 0x10], 0xa8f
and dword [ebp - 0x24], 0xe71
lea edx, [ebp - 0x60]
push edx
mov edx, dword [ebp - 0x5c]
push dword [edx - 4]
call fcn.00403e4e
mov ecx, dword [ebp - 0x5c]
mov edx, ecx
mov dword [ecx - 0x28], 0
add dword [ebp - 0x28], 0xd1f
sub eax, dword [ebp - 0x18]
cmp dword [ebp - 0x54], 0xffffffe9
jne 0x40d041
shr edx, cl
or dword [eax + 8], edx
mov ecx, dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 0xffffff94
jne 0x40d04f
xor eax, eax
mov dword [ecx - 0x2c], 0
or eax, dword [ebp - 0x48]
and dword [ebp - 0x4c], 0x12
add dword [ebp - 0x44], edx
push 4
and dword [ebp - 0x18], esi
sub edx, eax
or word [ebp - 0x74], 0x298
cmp dword [ebp - 0x40], 1
je 0x40d08a
push 0x41a35e
lea ecx, [esp + 0x18]
call fcn.00412d44
push 0
cmp dword [ebp - 0x40], 1
je 0x40d09b
mov bl, 0x36
push eax
push 1
or dword [ebp - 0x48], 0x8fd
add edx, 0x5ff6
mov ecx, dword [ebp - 0x6c]
sub edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x5c]
lea ecx, [esi - 0x2c]
mov dword [ebp - 0x6c], ecx
and edi, dword [ebp - 0x50]
cmp dword [ebp - 0x40], 1
je 0x40d0d6
test bh, 0x10
mov dword [esp + 0x137c], 0xffffffff
mov esi, ecx
call fcn.0040dbdb
mov eax, dword [esp + 0xc]
mov ecx, dword [ebp - 0x5c]
lea ebx, [ecx - 0x24]
mov dword [ebp - 0x6c], ebx
add esi, 0xc3d
lea ecx, [edx - 0x7b]
cmp dword [ebp - 0x40], 1
je 0x40f324
push dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x400002
jne 0x40f345
mov eax, 0x41a375
mov eax, 0x41a5d8
mov ecx, dword [esp + 4]
mov eax, dword [ecx]
push 0
or edi, dword [ebp - 0x48]
xor dword [ebp - 0x68], esi
mov eax, dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x400002
jne 0x40f363
mov esi, dword [esi]
mov eax, dword [eax]
push 0x41a2f9
mov ebx, dword [ebp - 0x5c]
lea eax, [ebx - 0x18]
mov dword [ebp - 0x6c], eax
add eax, dword [ebp - 0x28]
add dword [ebp - 0x54], 0
je 0x40f380
pop esi
mov dword fs:[0], ecx
push dword [ebp - 0x6c]
call fcn.004131e8
or dword [ebp - 0x58], 0x47f
mov edi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x48]
add dword [ebp - 0x68], 0xd8
lea edi, [ecx - 0x18]
mov dword [ebp - 0x6c], edi
cmp dword [ebp - 0x54], 0x400002
jne 0x40f3bf
call dword [0x41a05c]
push eax
push 0
push 0x41a484
push dword [ebp - 0x6c]
xor dword [ebp - 0x1c], edx
and word [ebp - 0x58], 0x65f
mov edx, dword [ebp - 0x5c]
push dword [edx - 0x34]
add ecx, dword [ebp - 0x64]
sub eax, dword [ebp - 0x24]
mov edx, ebx
mov edx, 0xce1e1b82
mov edx, ebx
mov esi, dword [ebp - 0x6c]
xor edi, dword [ebp - 0x50]
xor ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x5c]
and edx, esi
lea esi, [ebx - 0x14]
mov dword [ebp - 0x6c], esi
push dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x400002
jne 0x40f40a
mov byte [ebp - 1], 0
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0xc]
add eax, 0x5e8
call dword [eax]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x40], 1
je 0x40f42c
mov eax, 0x41a27f
mov ecx, dword [ebp - 0x6c]
test dword [ebp - 0x54], 0
je 0x40f44b
and eax, 0xff
push eax
call fcn.00413362
pop ecx
test eax, eax
je 0x40f447
or dword [ebp - 0x6c], ecx
jne 0x40fc20
mov edi, dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 0x69
jne 0x40f473
mov dword [ecx + 8], eax
lea ecx, [edx + 0xc]
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
and dword [esi + ebx*4 + 0x44], 0
xor edi, edi
push dword [edi + 0xc]
lea edx, [eax - 0x27]
mov byte [ebp - 0x4c], 0x86
mov ebx, dword [ebp - 0x6c]
or dword [ebp - 0x4c], esi
mov edi, dword [ebp - 0x5c]
add esi, dword [ebp - 0x34]
sub eax, edi
lea ebx, [edi - 0x24]
mov dword [ebp - 0x6c], ebx
push dword [ebp - 0x6c]
add ebx, dword [ebp - 0x48]
add edi, dword [ebp - 0x44]
add esi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x60]
xor dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0xc]
add ecx, 0x5ac
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
sub ebx, ecx
mov edx, dword [ebp - 0x5c]
add word [ebp - 0x4c], 0x169
or word [ebp - 0x48], 0x10c
mov dword [edx - 0x18], 0x18
add ecx, edx
mov eax, dword [ebp - 0x5c]
or dword [ebp - 0x2c], 3
mov dword [eax - 0xc], 0x40
cmp dword [ebp - 0x40], 1
je 0x40f4fb
cmp esi, edi
je 0x41051f
mov eax, dword [esi + 0x24]
cmp eax, edi
je 0x40f53d
push eax
add edi, edx
mov esi, dword [ebp - 0x5c]
mov dword [esi - 8], 0
add dword [ebp - 0x20], 0x279
mov esi, dword [ebp - 0x5c]
mov word [ebp - 0x58], 0x506
xor ecx, dword [ebp - 0x28]
mov dword [esi - 4], 0
add edi, dword [ebp - 0x74]
lea ebx, [edx + eax + 0x1d7a]
mov ebx, dword [ebp - 0x6c]
or edx, eax
mov edi, dword [ebp - 0x5c]
and eax, esi
mov eax, ebx
mov dword [ebp - 0x44], 0x9e8
lea ebx, [edi - 0x24]
mov dword [ebp - 0x6c], ebx
sub edi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x5c]
lea ecx, [ecx - 0x10]
push ecx
push dword [ebp - 0x6c]
call fcn.00403e4e
cmp dword [ebp - 0x54], 0x400002
jne 0x40f56e
call 0x405206
pop ecx
cmp dword [ebp - 0x54], 0x400002
jne 0x40f58a
lea esi, [ecx + esi - 4]
lea edi, [ecx + edi - 4]
test edi, 3
jne 0x40f514
mov ecx, dword [ebp - 0x6c]
or eax, edi
mov ebx, dword [ebp - 0x5c]
cmp dword [ebp - 0x54], 0
je 0x40f5ad
jne 0x40f615
call dword [0x41a070]
cmp eax, 0x7a
je 0x40f5e9
call fcn.0040bb74
lea ecx, [ebx - 0x18]
mov dword [ebp - 0x6c], ecx
and eax, dword [ebp - 0x1c]
sub edx, dword [ebp - 0x1c]
push dword [ebp - 0x6c]
sub ecx, dword [ebp - 0x18]
and dword [ebp - 0x64], 0xe94
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 0x34]
cmp dword [ebp - 0x54], 0x400002
jne 0x40f5e1
mov dword [esi + 0x14], eax
push esi
call fcn.00414602
mov eax, dword [ebp - 0x6c]
and ebx, eax
mov ebx, dword [ebp - 0x5c]
and ecx, dword [ebp - 0x74]
lea eax, [ebx - 0x1c]
mov dword [ebp - 0x6c], eax
or ebx, edx
sub esi, dword [ebp - 0x28]
push dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0x1c
jne 0x40f60f
push 0xfffffffffffffffe
mov ecx, 0x41a312
call fcn.0041175d
mov edx, dword [ebp - 0x60]
xor eax, dword [ebp - 0x10]
add esi, dword [ebp - 0x74]
mov edi, dword [ebp - 0xc]
add edi, 0x5e8
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x54], 0x400002
jne 0x40f637
mov eax, ecx
cmp dword [ebp - 0x40], 0xffffffc9
jne 0x40f65c
call fcn.00417d37
add esp, 0x1c
test ecx, ecx
jne 0x40f692
mov dword [ebp - 0x318], 1
inc dword [ebp - 0x2e4]
mov edx, dword [ebp - 0x6c]
mov byte [ebp - 0x10], 0xc2
add ebx, 0xbd3e
or dword [ebp - 0x6c], edx
jne 0x40fbfd
lea esi, [edi]
mov esi, 0x40aaf686
mov esi, ebx
sub ecx, dword [ebp - 0x18]
add ebx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x5c]
and edx, dword [ebp - 0x58]
cmp dword [ebp - 0x40], 1
je 0x40f69c
test edx, edx
jg 0x40f699
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov dword [ecx - 0x2c], 0x1000
or eax, dword [ebp - 0x24]
cmp dword [ebp - 0x54], 0x400002
jne 0x40f6ba
push edi
push ecx
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0x5c]
mov dword [edx - 0x30], 0
lea esi, [esi + ebx + 0x62]
mov esi, ecx
push 4
and edi, dword [ebp - 0x50]
cmp dword [ebp - 0x54], 0
je 0x40f6f1
push 0x41a22d
call esi
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov ecx, edi
lea esi, [esi + 0x606]
and eax, dword [ebp - 0x24]
push 0x3000
and eax, dword [ebp - 0x58]
sub ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x6c]
sub ecx, dword [ebp - 0x18]
cmp dword [ebp - 0x40], 1
je 0x40f716
mov ecx, edx
mov ecx, dword [ebp - 0x5c]
lea edi, [ecx - 0x2c]
mov dword [ebp - 0x6c], edi
sub ebx, edx
cmp dword [ebp - 0x54], 0x400002
jne 0x40f739
cmp dword [ebp - 0x54], 0
je 0x40f749
push dword [ebp - 0x6c]
add ecx, dword [ebp - 0x74]
cmp dword [ebp - 0x40], 1
je 0x40f764
cdq
mov ecx, 0x41a356
idiv ecx
test edx, edx
jne 0x40f7b8
cmp dword [ebp - 0x54], 0x400002
jne 0x40f782
cmp eax, edi
je fcn.0040f742
push 3
push esi
push dword [0x41a459]
call fcn.00405aa7
push 0
xor ebx, dword [ebp - 0x44]
sub esi, edi
mov ebx, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40f79e
lea ecx, [esp + 0x1c]
push ecx
push edi
mov eax, dword [ebp - 0x5c]
lea ebx, [eax - 0x30]
mov dword [ebp - 0x6c], ebx
and edx, dword [ebp - 0x28]
xor dword [ebp - 0x20], 0x930
lea esi, [ebx + ecx + 0x36]
push dword [ebp - 0x6c]
sub edx, edi
and edx, dword [ebp - 0x4c]
push 0xffffffff
and edx, dword [ebp - 0x64]
cmp dword [ebp - 0x40], 1
je 0x40f7df
jl 0x40f82f
call fcn.0040815f
mov eax, esi
shl eax, 3
mov ecx, dword [edi + 8]
add ecx, eax
mov edx, dword [ebp - 0x60]
mov esi, dword [ebp - 0xc]
add esi, 0x59c
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add eax, ebx
and ecx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x5c]
and esi, eax
mov esi, ecx
add edi, 0x81cb
push dword [ebx + 0x10]
cmp dword [ebp - 0x40], 0x400002
jne 0x40f81c
call dword [0x41a0e8]
push esi
push edi
add dword [ebp - 0x54], 0
je 0x40f83d
mov dword [ebp - 0x20], esi
mov dword [ebp - 4], 1
cmp dword [ecx + 4], 0
je 0x40f846
mov dword [ebx + 8], esi
push 0x41a1f1
mov edi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
and ebx, dword [ebp - 0x10]
sub edx, dword [ebp - 0x24]
lea edi, [ecx - 0x24]
mov dword [ebp - 0x6c], edi
push dword [ebp - 0x6c]
add edi, dword [ebp - 0x28]
sub esi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x60]
mov esi, dword [ebp - 0xc]
add esi, 0x5ac
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
lea edi, [edi - 0x63]
add dword [ebp - 0x44], esi
mov esi, dword [ebp - 0x6c]
or eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x5c]
and ecx, edi
lea esi, [edi - 0x28]
mov dword [ebp - 0x6c], esi
mov byte [ebp - 0x1c], 0x94
lea edx, [edx + 0x35]
push dword [ebp - 0x6c]
add edi, dword [ebp - 0x34]
add eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x5c]
push dword [esi - 0x2c]
sub ecx, ebx
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 0x30]
cmp dword [ebp - 0x40], 0x400002
jne 0x40f8bb
cmp dword [ebp - 0x40], 0x400002
jne 0x40f8cf
mov esi, ecx
lea eax, [esi + 4]
cmp dword [eax], 0
push 2
add edx, ecx
or esi, dword [ebp - 0x20]
xor esi, dword [ebp - 0x48]
mov edx, dword [ebp - 0x6c]
add esi, 0x9317
mov eax, dword [ebp - 0x5c]
and ecx, ebx
mov ecx, esi
lea edx, [eax - 0x24]
mov dword [ebp - 0x6c], edx
cmp dword [ebp - 0x54], 0x2e
jne 0x40f912
mov eax, 0x41a279
lea ecx, [ebp - 0x220]
lea ecx, [ebp - 0x230]
lea ecx, [ebp - 0x228]
push dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
or dword [ebp - 0x18], edx
or word [ebp - 0x48], 0x198
push dword [ecx - 0x1c]
cmp dword [ebp - 0x54], 0
je 0x40f941
sar ecx, 5
mov ecx, dword [ecx*4 + 0x42f580]
lea eax, [eax + eax*8]
lea eax, [ecx + eax*4]
test byte [eax + 4], 1
and edi, esi
mov edx, dword [ebp - 0x60]
sub eax, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0xc]
add ebx, 0x5ec
call dword [ebx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x40], 1
je 0x40f964
pop ebx
mov dword [ebp - 0x20], 0x725
mov eax, dword [ebp - 0x6c]
or esi, dword [ebp - 0x2c]
or dword [ebp - 0x6c], eax
jne 0x40fa8d
lea ecx, [ebp - 0x14]
push ecx
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 0x30]
call fcn.00403e4e
lea ecx, [ebp - 0x6c]
push ecx
mov ecx, dword [ebp - 0x5c]
push dword [ecx + 0x18]
call fcn.00403e4e
cmp dword [ebp - 0x54], 0
je 0x40f9a4
mov dword [ebp - 0x34], eax
mov ebx, dword [ebp - 0x14]
or dword [ebp - 0x1c], 0xffffffb8
mov edi, dword [ebp - 0x6c]
sub eax, dword [ebp - 0x28]
cmp dword [ebx + 4], edi
jne 0x40fa97
cmp dword [ebp - 0x40], 1
je 0x40f9d8
push 0x41a1d6
push 0x41a559
push dword [esi + 0x1c]
call dword [0x41a11c]
xor eax, eax
mov edx, dword [ebp - 0x14]
and word [ebp - 0x1c], 0xe80
add ebx, 0x5dc2
push dword [edx + 8]
add edx, ecx
mov edi, dword [ebp - 0x6c]
sub edx, dword [ebp - 0x74]
mov dword [ebp - 0x68], ecx
mov edx, dword [ebp - 0x14]
lea edi, [edx + 0xc]
mov dword [ebp - 0x6c], edi
add eax, 0xdfd
mov dword [ebp - 0x4c], ecx
sub ecx, eax
xor esi, ebx
push dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
push dword [ecx + 0x14]
call fcn.004177d4
xor edx, dword [ebp - 0x50]
cmp dword [ebp - 0x54], 0x6c
jne 0x40fa2c
push 8
push 0x41a536
lea ecx, [ebp - 0x38]
push ecx
mov ecx, dword [ebp - 0x14]
push dword [ecx + 8]
call fcn.00403e4e
and dword [ebp - 0x34], 0xffffffba
mov eax, dword [ebp - 0x5c]
lea eax, [eax - 0x28]
push eax
push dword [ebp - 0x38]
call fcn.00403e4e
cmp dword [ebp - 0x40], 1
je 0x40fa59
int3
mov dword [ebp - 0x70], 1
cmp dword [ebp - 0x40], 1
je 0x40fa70
add eax, ebx
cmp dword [eax], 0
jne 0x40fa89
jmp 0x40fa97
push eax
lea edi, [esi + 0x30]
mov dword [ebp - 0x70], 0xfffffffe
and eax, dword [ebp - 0x2c]
sub ebx, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x5c]
xor edx, dword [ebp - 0x4c]
mov dword [ebx - 0x2c], 0
add ebx, dword [ebp - 0x74]
cmp dword [ebp - 0x54], 0xffffffae
jne 0x40faca
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x9c]
call fcn.00407e2d
mov eax, dword [eax + 4]
push 0x8000
lea esi, [ecx + 0xc]
mov eax, dword [ebp - 0x6c]
xor word [ebp - 0x64], 0xd9a
add dword [ebp - 0x54], 0
je 0x40faf9
je fcn.00417ba0
cmp esi, 0x6f
jg 0x405ee0
je 0x41532c
mov ebx, dword [ebp - 0x5c]
sub edx, dword [ebp - 0x18]
test dword [ebp - 0x54], 0
je 0x40fb0e
push ebx
push esi
push edi
lea eax, [ebx - 0x2c]
mov dword [ebp - 0x6c], eax
and word [ebp - 0x20], 0x200
sub esi, edi
cmp dword [ebp - 0x40], 0x400002
jne 0x40fb34
add ecx, 0xffffffd4
call fcn.00411387
push ebp
mov ebp, esp
pop ebp
push dword [ebp - 0x6c]
mov dword [ebp - 0x28], esi
and esi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x6c]
or edx, eax
mov ebx, dword [ebp - 0x5c]
or esi, dword [ebp - 0x68]
lea ecx, [ebx - 0x30]
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0x40], 1
je 0x40fb61
jne 0x40fb5e
mov eax, 0x41a40f
mov eax, dword [eax + 8]
or dword [ebp - 0x64], ebx
and dword [ebp - 0x24], eax
push dword [ebp - 0x6c]
or dword [ebp - 0x74], 0xfffffff6
cmp dword [ebp - 0x54], 0xffffffb6
jne 0x40fb88
call dword [edx + 4]
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov dword [esp + 0x137c], edi
push 0xffffffff
add word [ebp - 0x34], 0xcb2
mov edx, dword [ebp - 0x60]
and dword [ebp - 0x2c], esi
mov ecx, dword [ebp - 0xc]
add ecx, 0x5a0
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x5c]
mov edi, ecx
push dword [edx - 0x1c]
add edi, dword [ebp - 0x4c]
and ebx, edi
mov edx, dword [ebp - 0x60]
lea esi, [ebx + 0x1d83]
mov eax, dword [ebp - 0xc]
add eax, 0x594
call dword [eax]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x5c]
add esi, edi
push dword [edx - 0x14]
mov edx, dword [ebp - 0x60]
xor ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0xc]
add eax, 0x594
call dword [eax]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
mov word [ebp - 0x1c], 0xdca
xor esi, eax
jmp 0x40fc31
or esi, dword [ebp - 0x2c]
sub edi, dword [ebp - 0x24]
mov dword [ebp - 0x70], 0xffffffff
cmp dword [ebp - 0x54], 0
je 0x40fc14
inc edi
jmp 0x40fc31
xor dword [ebp - 0x2c], 0xbfa
add dword [ebp - 0x28], edx
mov dword [ebp - 0x70], 0xffffffff
lea ecx, [ebp - 0x6c]
and dword [ebp - 0x4c], edi
push ecx
and dword [ebp - 0x2c], 0xd07
push dword [ebp - 0x70]
cmp dword [ebp - 0x40], 1
je 0x40fc5f
mov edi, 0x41a4ce
mov ebx, edi
test esi, esi
je 0x40fc7c
push 0x41a2ff
lea ecx, [esp + 0x18]
call fcn.00403e4e
lea ebx, [ebp - 0x38]
push ebx
mov ebx, dword [ebp - 0x5c]
push dword [ebx - 0x28]
call fcn.00403e4e
cmp dword [ebp - 0x40], 1
je 0x40fc87
add ebx, edi
call fcn.004126bd
pop ecx
pop ecx
xor eax, eax
mov dword [ebp - 0x28], esi
pop dword [ebp - 0x70]
add dword [ebp - 0x54], 0
je 0x40fca5
lea eax, [eax + edi*8]
and dword [eax], 0xfffffffe
call dword [0x41a064]
pop esi
pop edi
pop ebx
add ecx, edx
add dword [ebp - 0x4c], 0x16c
pop dword [ebp - 0x14]
pop dword [ebp - 0xc]
mov ebx, dword [ebp - 0x5c]
or edi, dword [ebp - 0x18]
mov esp, ebx
xor edi, ecx
pop dword [ebp - 0x5c]
ret 0x14
invalid
ja 0x4120c7