Function at 0x58c6e0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov ecx, 4
push 0
push 0
dec ecx
jne 0x58c6e8
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x58cd33
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebx + 0x439], 0
je 0x58c74f
mov eax, dword [ebx + 0x448]
cmp dword [eax + 0x64], 1
jne 0x58c725
cmp byte [ebx + 0x43a], 0
je 0x58c725
mov al, 1
jmp 0x58c751
mov eax, dword [ebx + 0x448]
cmp dword [eax + 0x64], 2
jne 0x58c73e
cmp byte [ebx + 0x43c], 0
je 0x58c73e
mov al, 1
jmp 0x58c751
cmp byte [ebx + 0x43b], 0
je 0x58c74b
mov al, 1
jmp 0x58c751
xor eax, eax
jmp 0x58c751
mov al, 1
test al, al
jne 0x58c762
push 0
call sub.kernel32.dll_GetCurrentProcess
push eax
call sub.kernel32.dll_TerminateProcess
lea edx, [ebx + 0x448]
mov eax, ebx
call fcn.0058c484
mov ecx, dword [ebx + 0x3a8]
mov edx, dword [ebx + 0x454]
mov eax, dword [ebx + 0x448]
call fcn.00585ce4
mov esi, eax
mov edx, 0x58cd50
mov eax, 0x58cd7c
call fcn.0050c8a0
mov byte [ebx + 0x41c], 1
mov byte [ebx + 0x41c], 2
cmp esi, 0xfffffffe
jne 0x58c7dd
mov eax, dword [ebx + 0x448]
call fcn.00585cd4
test al, al
je 0x58c7dd
mov eax, dword [ebx + 0x448]
call fcn.00581640
test al, al
je 0x58c7dd
xor esi, esi
xor eax, eax
mov dword [ebx + 0x420], eax
mov eax, dword [ebx + 0x448]
xor edx, edx
mov dword [eax + 0x54], edx
lea edx, [ebp - 8]
mov eax, dword [ebx + 0x42c]
call fcn.0045c828
mov ecx, dword [ebp - 8]
lea eax, [ebp - 4]
mov edx, 0x58cdc4
call fcn.004068c8
mov eax, dword [ebp - 4]
mov edx, 0x58cd50
call fcn.0050c8a0
test esi, esi
jl 0x58cc85
mov eax, dword [ebx + 0x448]
call fcn.00585cd4
test al, al
je 0x58c850
mov eax, dword [ebx + 0x448]
call fcn.00581640
test al, al
je 0x58c841
mov edx, dword [ebx + 0x470]
mov eax, dword [ebx + 0x3ac]
call fcn.004d035c
jmp 0x58c85d
mov dl, 1
mov eax, dword [ebx + 0x3b4]
call fcn.004d026c
jmp 0x58c85d
mov dl, 1
mov eax, dword [ebx + 0x3e4]
call fcn.004d026c
mov eax, dword [ebx + 0x448]
call fcn.00585cd4
test al, al
je 0x58c883
mov dword [ebx + 0x420], 1
mov eax, dword [ebx + 0x448]
mov dword [eax + 0x54], 1
lea ecx, [ebp - 0xc]
lea edx, [ebx + 0x42c]
mov eax, dword [ebx + 0x448]
call fcn.005861a0
mov edx, dword [ebp - 0xc]
lea eax, [ebx + 0x428]
call fcn.004064f4
lea edx, [ebp - 0x14]
mov eax, dword [ebx + 0x42c]
call fcn.0045c828
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x10]
mov edx, 0x58ce0c
call fcn.004068c8
mov eax, dword [ebp - 0x10]
mov edx, 0x58cd50
call fcn.0050c8a0
mov eax, dword [ebx + 0x42c]
mov edx, eax
inc edx
cmp edx, 5
ja case.default.0x58c8e2
jmp dword [edx*4 + 0x58c8e9]
mov edx, 0x58cd50
mov eax, 0x58ce4c
call fcn.0050c8a0
push 0
call sub.kernel32.dll_GetCurrentProcess
push eax
call sub.kernel32.dll_TerminateProcess
jmp 0x58ccfe
mov eax, dword [0x5aad64]
cmp byte [eax + 0x57], 0
je 0x58c9d2
mov eax, dword [ebx + 0x420]
test eax, eax
je 0x58c94e
cmp eax, 1
je 0x58c94e
cmp eax, 2
je 0x58c94e
cmp eax, 3
jne 0x58ccfe
xor edx, edx
mov eax, dword [ebx + 0x398]
call fcn.004d026c
xor edx, edx
mov eax, dword [ebx + 0x3a8]
call fcn.004d026c
xor edx, edx
mov eax, dword [ebx + 0x380]
call fcn.004d026c
mov dl, 1
mov eax, dword [ebx + 0x3ac]
call fcn.004d026c
lea edx, [ebp - 0x18]
mov eax, dword [ebx + 0x3b4]
call fcn.004d0324
mov edx, dword [ebp - 0x18]
mov eax, dword [ebx + 0x3ac]
call fcn.004d035c
mov eax, dword [0x5aad64]
cmp byte [eax + 0x57], 0
jne 0x58c9b3
mov eax, dword [0x5aad64]
call fcn.004ed888
mov dl, 1
mov eax, dword [ebx + 0x3e8]
call fcn.004d026c
mov dl, 1
mov eax, dword [ebx + 0x384]
call fcn.004d026c
jmp 0x58ccfe
mov eax, dword [ebx + 0x420]
test eax, eax
je 0x58c9ef
cmp eax, 1
je 0x58c9ef
cmp eax, 2
je 0x58c9ef
cmp eax, 3
jne 0x58ca73
xor edx, edx
mov eax, dword [ebx + 0x398]
call fcn.004d026c
xor edx, edx
mov eax, dword [ebx + 0x3a8]
call fcn.004d026c
xor edx, edx
mov eax, dword [ebx + 0x380]
call fcn.004d026c
mov dl, 1
mov eax, dword [ebx + 0x3ac]
call fcn.004d026c
lea edx, [ebp - 0x1c]
mov eax, dword [ebx + 0x3b4]
call fcn.004d0324
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x3ac]
call fcn.004d035c
mov eax, dword [0x5aad64]
cmp byte [eax + 0x57], 0
jne 0x58ca54
mov eax, dword [0x5aad64]
call fcn.004ed888
mov dl, 1
mov eax, dword [ebx + 0x3e8]
call fcn.004d026c
mov dl, 1
mov eax, dword [ebx + 0x384]
call fcn.004d026c
jmp 0x58ccfe
mov eax, ebx
call fcn.0058da2c
jmp 0x58ccfe
mov edx, 0x58cd50
mov eax, 0x58ce88
call fcn.0050c8a0
mov edx, dword [ebx + 0x3b8]
mov eax, dword [ebx + 0x448]
call fcn.005848b0
xor edx, edx
mov eax, dword [ebx + 0x3b8]
call fcn.0051043c
mov edx, 0x58cd50
mov eax, 0x58cea4
call fcn.0050c8a0
mov edx, dword [ebx + 0x39c]
mov eax, dword [ebx + 0x378]
call fcn.0058a7c4
mov edx, 0x58cd50
mov eax, 0x58ced4
call fcn.0050c8a0
mov dl, 1
mov eax, dword [ebx + 0x3e8]
call fcn.004d026c
mov edi, dword [ebx + 0x420]
cmp edi, 2
je 0x58cb38
lea edx, [ebp - 0x24]
mov eax, edi
call fcn.0045c828
mov ecx, dword [ebp - 0x24]
lea eax, [ebp - 0x20]
mov edx, 0x58cf18
call fcn.004068c8
mov eax, dword [ebp - 0x20]
mov edx, 0x58cd50
call fcn.0050c8a0
mov eax, dword [0x5aad64]
call fcn.004d8c24
call fcn.0050f3e0
mov eax, dword [0x5aad64]
call fcn.004ed888
jmp 0x58ccfe
mov edx, 0x58cd50
mov eax, 0x58cf50
call fcn.0050c8a0
mov edx, 1
mov eax, dword [ebx + 0x378]
call fcn.0058a7e4
mov edx, 0x58cd50
mov eax, 0x58cf88
call fcn.0050c8a0
xor edx, edx
mov eax, ebx
call fcn.0058d854
mov edx, 0x58cd50
mov eax, 0x58cfc0
call fcn.0050c8a0
jmp 0x58ccfe
cmp dword [ebx + 0x420], 0
jne 0x58cbbc
xor edx, edx
mov eax, dword [ebx + 0x380]
call fcn.004d026c
mov dl, 1
mov eax, dword [ebx + 0x3f0]
call fcn.004d026c
mov edx, dword [ebx + 0x3a0]
mov eax, dword [ebx + 0x378]
call fcn.0058a7c4
jmp 0x58ccfe
mov eax, ebx
call fcn.0058da2c
jmp 0x58ccfe
mov edx, dword [ebx + 0x3b8]
mov eax, dword [ebx + 0x448]
call fcn.005848b0
mov edx, 0x58cd50
mov eax, 0x58cea4
call fcn.0050c8a0
mov edx, dword [ebx + 0x39c]
mov eax, dword [ebx + 0x378]
call fcn.0058a7c4
mov edx, 0x58cd50
mov eax, 0x58d000
call fcn.0050c8a0
mov edx, 0x58cd50
mov eax, 0x58cf50
call fcn.0050c8a0
mov edx, 1
mov eax, dword [ebx + 0x378]
call fcn.0058a7e4
mov edx, 0x58cd50
mov eax, 0x58cf88
call fcn.0050c8a0
xor edx, edx
mov eax, ebx
call fcn.0058d854
mov edx, 0x58cd50
mov eax, 0x58cfc0
call fcn.0050c8a0
jmp 0x58ccfe
cmp eax, 2
cmp dword [ebx + 0x420], 0
je 0x58cc6b
mov eax, ebx
call fcn.0058da2c
jmp 0x58ccfe
mov edx, dword [ebx + 0x3a0]
mov eax, dword [ebx + 0x378]
call fcn.0058a7c4
mov byte [ebx + 0x425], 1
jmp 0x58ccfe
cmp dword [ebx + 0x420], 0
jne 0x58ccf7
xor edx, edx
mov eax, dword [ebx + 0x3a8]
call fcn.004d026c
mov edx, dword [ebx + 0x45c]
mov eax, dword [ebx + 0x3ac]
call fcn.004d035c
mov edx, dword [ebx + 0x390]
mov edx, dword [edx + 0x48]
mov eax, dword [ebx + 0x3ac]
sub edx, dword [eax + 0x48]
sar edx, 1
jns 0x58ccc5
adc edx, 0
call fcn.004cf94c
mov edx, dword [ebx + 0x458]
mov eax, dword [ebx + 0x3e8]
call fcn.004ffac0
mov dl, 1
mov eax, dword [ebx + 0x3ac]
call fcn.004d026c
mov dl, 1
mov eax, dword [ebx + 0x3e8]
call fcn.004d026c
jmp 0x58ccfe
mov eax, ebx
call fcn.0058da2c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58cd3a
lea eax, [ebp - 0x24]
mov edx, 2
call fcn.004064ec
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.004064ec
lea eax, [ebp - 0x14]
mov edx, 5
call fcn.004064ec
ret