Function at 0x10040a50
Capabilities:
Terminate process

Disassembly:
mov eax, dword fs:[0]
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1000e010
push 0x10044e84
push eax
mov dword fs:[0], esp
sub esp, 0x18
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
mov dword [ebp - 0x24], ebp
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], esp
cmp dword [0x10015964], 0
jne case.0x100415b3.0
inc dword [0x10015964]
call fcn.10044e40
call fcn.10044d50
mov dword [ebp - 4], 0
call fcn.10044b70
call fcn.10044a20
mov dword [ebp - 4], 0xffffffff
call fcn.10042290
call fcn.10041e70
test eax, eax
je 0x10040acc
mov dword [0x1001597c], 1
xor eax, eax
xor esi, esi
push eax
mov dword [eax*4 + 0x1003ce10], esi
call fcn.10041e60
add esp, 4
cmp eax, 0x64
jl 0x10040ad0
push 0x1003c930
mov esi, 4
mov edi, 0xfffffffc
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov eax, dword [0x10016208]
mov ecx, dword [eax]
mov eax, ecx
mov dword [0x1003c948], ecx
and eax, 0xffff
add dword [0x10016208], esi
mov dword [0x1003c94c], eax
mov eax, ecx
and eax, 0xffff0000
cmp eax, 0x3420000
ja 0x10040b3a
je 0x10040dd3
cmp eax, 0xe40000
je 0x10040d93
jmp 0x10040afa
cmp eax, 0x7040000
ja 0x10040b54
je 0x10040e55
cmp eax, 0x6110000
je 0x10040df5
jmp 0x10040afa
cmp eax, 0x97d0000
ja 0x10040b6e
je 0x10040e79
cmp eax, 0x96f0000
je 0x10041595
jmp 0x10040afa
cmp eax, 0x10e40000
ja 0x10040b8b
je 0x10040ecf
cmp eax, 0x10920000
je 0x10040eb4
jmp 0x10040afa
cmp eax, 0x11090000
ja 0x10040ba8
je 0x10040f45
cmp eax, 0x11040000
je 0x10040f13
jmp 0x10040afa
cmp eax, 0x19920000
ja 0x10040bc5
je 0x10040fbb
cmp eax, 0x19530000
je 0x10040f74
jmp 0x10040afa
cmp eax, 0x1b730000
ja 0x10040be2
je 0x10040ffd
cmp eax, 0x1a440000
je 0x10040fdd
jmp 0x10040afa
cmp eax, 0x21090000
ja 0x10040bff
je 0x10041081
cmp eax, 0x20e40000
je 0x10041039
jmp 0x10040afa
cmp eax, 0x22450000
ja 0x10040c1c
je 0x100410fb
cmp eax, 0x22040000
je 0x100410d1
jmp 0x10040afa
cmp eax, 0x29530000
ja 0x10040c39
je 0x10041136
cmp eax, 0x22b70000
je 0x1004111b
jmp 0x10040afa
cmp eax, 0x30030000
ja 0x10040c56
je 0x100411b8
cmp eax, 0x2a610000
je 0x10041180
jmp 0x10040afa
cmp eax, 0x33890000
ja 0x10040c73
je 0x1004121b
cmp eax, 0x33450000
je 0x10041200
jmp 0x10040afa
cmp eax, 0x3b1e0000
ja 0x10040c90
je 0x10041264
cmp eax, 0x3a510000
je 0x10041241
jmp 0x10040afa
cmp eax, 0x3ed70000
ja 0x10040cad
je 0x100412c7
cmp eax, 0x3dc80000
je 0x100412a3
jmp 0x10040afa
cmp eax, 0x4d030000
ja 0x10040cca
je 0x10041323
cmp eax, 0x4bd30000
je 0x100412ec
jmp 0x10040afa
cmp eax, 0x51040000
ja 0x10040ce7
je 0x10041369
cmp eax, 0x4ef60000
je 0x10041349
jmp 0x10040afa
cmp eax, 0x59100000
ja 0x10040d04
je 0x100412da
cmp eax, 0x52110000
je 0x10041387
jmp 0x10040afa
cmp eax, 0x60520000
ja 0x10040d21
je 0x100413d6
cmp eax, 0x5d500000
je 0x100413a3
jmp 0x10040afa
cmp eax, 0x65ab0000
ja 0x10040d3e
je 0x10041413
cmp eax, 0x654d0000
je 0x100413f8
jmp 0x10040afa
cmp eax, 0x71230000
ja 0x10040d5b
je 0x10041478
cmp eax, 0x698a0000
je 0x10041463
jmp 0x10040afa
cmp eax, 0x74bb0000
ja 0x10040d78
je 0x1004150c
cmp eax, 0x73230000
je 0x100414d8
jmp 0x10040afa
cmp eax, 0x7aa40000
je 0x10041527
cmp eax, 0x7b520000
je 0x1004156a
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x14
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov edx, dword [eax + 0x10]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], 0x14
jmp 0x10040afa
mov eax, dword [0x10016208]
mov edx, dword [0x1003c94c]
add dword [0x10016208], esi
mov ecx, dword [eax]
push ecx
push edx
call fcn.100408a0
add esp, 8
jmp 0x10040afa
mov eax, dword [0x1003c94c]
cmp eax, 0x7a51
je 0x10040e0a
cmp eax, 0xbc06
je 0x10040e17
jmp 0x10040e22
mov eax, dword [0x10016204]
and dword [eax], 0xff
jmp 0x10040e22
mov eax, dword [0x10016204]
and dword [eax], 0xffff
mov eax, dword [0x10016208]
mov edx, dword [0x10016204]
mov ecx, dword [eax]
mov dword [0x1003c948], ecx
add dword [0x10016208], esi
add dword [0x10016204], esi
cmp dword [edx], 0
je 0x10040afa
mov dword [0x10016208], ecx
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
inc eax
mov ecx, dword [0x1003c94c]
push eax
push ecx
call fcn.100408a0
add esp, 8
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0xc
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
add esp, 0x10
mov dword [ebx], eax
add dword [0x10016204], 0xc
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
mov ecx, dword [0x10016204]
add dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x18
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov edx, dword [eax + 0x10]
push edx
mov edx, dword [eax + 0x14]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], 0x18
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 4
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
mov eax, dword [ebx]
push edx
push eax
call dword [ecx]
add esp, 8
mov dword [ebx], eax
add dword [0x10016204], esi
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 4
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
mov eax, dword [ebx]
push edx
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], esi
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x18
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov edx, dword [eax + 0x10]
push edx
mov edx, dword [eax + 0x14]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
add esp, 0x1c
mov dword [ebx], eax
add dword [0x10016204], 0x18
jmp 0x10040afa
mov eax, dword [0x10016204]
mov edx, dword [0x1003c94c]
mov ecx, dword [eax]
push ecx
push edx
call fcn.100408a0
add esp, 8
add dword [0x10016204], esi
jmp 0x10040afa
mov eax, dword [0x10016208]
add dword [0x10016204], edi
add dword [0x10016208], esi
call dword [eax]
mov ecx, dword [0x10016204]
mov dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x10
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], 0x10
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x1c
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov edx, dword [eax + 0x10]
push edx
mov edx, dword [eax + 0x14]
push edx
mov edx, dword [eax + 0x18]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], 0x1c
jmp 0x10040afa
mov eax, dword [0x10016208]
mov edx, dword [0x10016204]
mov ecx, dword [eax]
mov eax, dword [0x1003c94c]
mov dword [0x1003c948], ecx
add dword [0x10016208], esi
add dword [0x10016204], esi
cmp dword [edx], eax
jne 0x10040afa
mov eax, dword [0x10016208]
add dword [0x10016204], edi
mov ecx, dword [0x10016204]
mov dword [ecx], eax
mov edx, dword [0x1003c948]
mov dword [0x10016208], edx
jmp 0x10040afa
mov eax, dword [0x10016204]
mov ecx, dword [0x1003c94c]
push ecx
mov ebx, dword [eax]
call fcn.10040900
add esp, 4
mov ecx, eax
mov eax, ebx
sub edx, edx
div ecx
mov eax, dword [0x10016204]
mov dword [eax], edx
jmp 0x10040afa
mov eax, dword [0x10016204]
mov ecx, dword [eax]
mov eax, dword [0x1003c94c]
shl eax, 2
mov dword [0x10016208], ecx
add dword [0x10016204], eax
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
mov ecx, dword [0x10016204]
sub dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
mov ebx, dword [eax + 4]
push edx
push ebx
mov edx, dword [eax + 8]
mov ebx, dword [eax + 0xc]
push edx
push ebx
mov edx, dword [eax + 0x10]
mov ebx, dword [eax + 0x14]
push edx
push ebx
mov edx, dword [eax + 0x18]
mov ebx, dword [eax + 0x1c]
push edx
push ebx
call dword [ecx]
add esp, 0x20
mov ecx, dword [0x10016204]
mov dword [ecx + 0x20], eax
add dword [0x10016204], 0x20
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0xc
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], 0xc
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 4
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
mov eax, dword [ebx]
push edx
push eax
call dword [ecx]
mov dword [ebx], eax
mov eax, dword [0x10016204]
mov ecx, dword [eax + 4]
add eax, 4
lea edx, [ecx + ecx*4]
mov dword [0x10016204], eax
lea ecx, [edx + edx*4]
shl ecx, 4
add dword [0x10016208], ecx
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
mov ecx, dword [0x10016204]
and dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
call dword [ecx]
add esp, 4
mov ecx, dword [0x10016204]
mov dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
call dword [ecx]
mov ecx, dword [0x10016204]
mov dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x10
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
add esp, 0x14
mov dword [ebx], eax
add dword [0x10016204], 0x10
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
dec eax
mov ecx, dword [0x1003c94c]
push eax
push ecx
call fcn.100408a0
add esp, 8
jmp 0x10040afa
mov eax, dword [0x10016208]
add dword [0x10016204], edi
mov ecx, dword [0x10016204]
mov dword [ecx], eax
mov eax, dword [0x10016208]
mov ecx, dword [eax]
mov dword [0x10016208], ecx
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 8
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
add esp, 0xc
mov dword [ebx], eax
add dword [0x10016204], 8
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add dword [0x10016204], edi
mov ecx, dword [0x10016204]
add esp, 4
mov dword [0x1003c948], eax
mov dword [ecx], eax
jmp 0x10040afa
mov eax, dword [0x10016208]
add dword [0x10016204], edi
add dword [0x10016208], esi
call dword [eax]
mov ecx, dword [0x10016204]
mov dword [ecx], eax
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
mov ecx, dword [0x10016204]
imul eax, dword [ecx]
mov dword [ecx], eax
jmp 0x10040afa
mov eax, dword [0x10016204]
mov edx, dword [0x1003c94c]
mov ecx, dword [eax]
push ecx
push edx
call fcn.100408a0
add esp, 8
jmp 0x10040afa
mov eax, dword [0x10016204]
mov ecx, dword [0x1003c94c]
push ecx
mov eax, dword [eax]
and eax, 0x1f
mov dword [0x1003c948], eax
call fcn.10040900
add esp, 4
mov cl, byte [0x1003c948]
shr eax, cl
mov ecx, dword [0x10016204]
mov dword [ecx], eax
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
push eax
mov eax, dword [0x1003c94c]
push eax
call fcn.100408a0
add esp, 8
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
mov ecx, dword [0x10016204]
or dword [ecx], eax
jmp 0x10040afa
mov eax, dword [0x10016208]
mov edx, dword [0x10016204]
mov ecx, dword [eax]
mov eax, dword [0x1003c94c]
mov dword [0x1003c948], ecx
add dword [0x10016208], esi
add dword [0x10016204], esi
cmp dword [edx], eax
je 0x10040afa
mov eax, dword [0x10016208]
add dword [0x10016204], edi
mov ecx, dword [0x10016204]
mov dword [ecx], eax
mov edx, dword [0x1003c948]
mov dword [0x10016208], edx
jmp 0x10040afa
push 0
mov eax, dword [0x1003c94c]
push eax
call fcn.100408a0
add esp, 8
jmp 0x10040afa
mov eax, dword [0x1003c94c]
cmp eax, 0x7a51
je 0x1004148d
cmp eax, 0xbc06
je 0x1004149a
jmp 0x100414a5
mov eax, dword [0x10016204]
and dword [eax], 0xff
jmp 0x100414a5
mov eax, dword [0x10016204]
and dword [eax], 0xffff
mov eax, dword [0x10016208]
mov edx, dword [0x10016204]
mov ecx, dword [eax]
mov dword [0x1003c948], ecx
add dword [0x10016208], esi
add dword [0x10016204], esi
cmp dword [edx], 0
jne 0x10040afa
mov dword [0x10016208], ecx
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 8
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
mov dword [ebx], eax
add dword [0x10016204], 8
jmp 0x10040afa
mov eax, dword [0x1003c94c]
push eax
call fcn.10040900
add esp, 4
mov ecx, dword [0x10016204]
xor dword [ecx], eax
jmp 0x10040afa
mov ecx, dword [0x10016208]
mov ebx, dword [0x10016204]
add ebx, 0x14
mov eax, dword [0x10016204]
add dword [0x10016208], esi
mov edx, dword [eax]
push edx
mov edx, dword [eax + 4]
push edx
mov edx, dword [eax + 8]
push edx
mov edx, dword [eax + 0xc]
push edx
mov edx, dword [eax + 0x10]
push edx
mov eax, dword [ebx]
push eax
call dword [ecx]
add esp, 0x18
mov dword [ebx], eax
add dword [0x10016204], 0x14
jmp 0x10040afa
mov eax, dword [0x10016204]
mov ecx, dword [0x1003c94c]
push ecx
mov ebx, dword [eax]
call fcn.10040900
add esp, 4
mov ecx, eax
mov eax, ebx
sub edx, edx
div ecx
mov edx, dword [0x10016204]
mov dword [edx], eax
jmp 0x10040afa
mov eax, dword [0x1003c94c]
mov dword [0x10015968], eax
cmp eax, 9
jg 0x100415ba
je case.0x100415b3.1
cmp eax, 7
ja case.0x100415b3.4
xor ecx, ecx
mov cl, byte [eax + 0x10041714]
jmp dword [ecx*4 + 0x10041700]
cmp eax, 0x8000
je 0x100415d6
mov dword [0x10015968], 3
and word [0x1000f1cc], 0xfffe
jmp case.0x100415b3.1
mov dword [0x10015968], 0
jmp case.0x100415b3.1
cmp dword [0x10015968], 0
je 0x1004163f
cmp dword [0x10015968], 2
jne 0x1004162c
cmp dword [0x1003c960], 0
je 0x1004163f
push 0x2010
call fcn.10040170
push eax
call fcn.10041fe0
add esp, 8
test byte [0x1000f1cc], 1
jne 0x10041654
mov eax, dword [0x10015968]
push eax
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov ebp, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
mov esp, dword [ebp - 0x1c]
xor eax, eax
jmp 0x100416eb
test byte [0x1000f1cc], 1
mov esi, dword [ebp + 0xc]
je 0x100416c9
test esi, esi
je 0x1004167b
cmp esi, 1
je 0x100416c3
jmp 0x100416c9
cmp dword [0x10015964], 1
jbe 0x1004168a
dec dword [0x10015964]
cmp dword [0x10015964], 2
ja 0x100416c9
cmp dword [0x100159e8], 0
je 0x100416bc
push 0
mov eax, dword [0x100159e8]
push 0xffffffffffffffff
push eax
call fcn.10052447
add esp, 0xc
test eax, eax
jne 0x100416bc
mov dword [0x100159e8], 0
call fcn.1004e869
jmp 0x100416c9
inc dword [0x10015964]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
push eax
push esi
push ecx
call dword [0x10015960]
mov dword [0x10015968], eax
mov ebp, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
mov esp, dword [ebp - 0x1c]
mov eax, dword [0x10015968]
mov ecx, dword [ebp - 0x10]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc