Function at 0x403675
Capabilities:
Check mutex on windows
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xe8
mov eax, dword [fcn.00408e81]
xor eax, ebp
mov dword [ebp + 0x74], eax
push ebx
push esi
mov esi, ecx
xor ebx, ebx
cmp dword [esi + 0xd8], 2
push edi
mov dword [ebp - 0x24], ebx
mov byte [esi + 0x1b5], bl
je 0x4036d1
mov ecx, dword [esi + 0xd0]
call fcn.00405159
test eax, 0xfffffffd
je 0x4036d1
mov ecx, esi
call fcn.00402882
mov ecx, esi
mov dword [esi + 0x1bc], eax
call fcn.0040213c
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 0x54]
mov eax, dword [esi + 0xd8]
xor edi, edi
inc edi
cmp eax, edi
je 0x4037bc
cmp eax, 2
jle 0x403749
cmp eax, 4
jle 0x40378b
cmp eax, 6
je 0x403709
cmp eax, 7
jne 0x403749
mov dword [ebp - 0x24], 3
mov dword [esi + 0xd8], edi
jmp 0x403749
push ecx
push ecx
lea eax, [esi + 0xec]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [esi + 0xe4]
mov ecx, esp
push eax
call fcn.00401037
push ebx
mov ecx, esi
call fcn.004035b0
test al, al
jne 0x404588
mov byte [esi + 0x1b4], 1
mov dword [esi + 0xd8], edi
mov dword [ebp - 0x24], edi
mov eax, dword [esi + 0xd8]
dec eax
je 0x4041c2
dec eax
je 0x404087
dec eax
je 0x403924
dec eax
je 0x403863
dec eax
je 0x404354
sub eax, 4
jne 0x404588
lea ecx, [ebp - 0x34]
call fcn.0040102d
lea ecx, [ebp - 0x34]
jmp 0x404583
push ecx
push ecx
lea eax, [esi + 0xec]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [esi + 0xe4]
mov ecx, esp
push eax
call fcn.00401037
push ebx
mov ecx, esi
call fcn.004035b0
test al, al
je 0x403749
jmp 0x404588
mov ecx, dword [esi + 0xd0]
call fcn.00405159
test eax, 0xffffff7f
jne 0x4037e7
mov dword [esi + 0xdc], 8
mov dword [esi + 0xd8], 5
jmp 0x403749
push ecx
push ecx
lea eax, [esi + 0xec]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [esi + 0xe4]
mov ecx, esp
push eax
call fcn.00401037
push ebx
mov ecx, esi
call fcn.004035b0
test al, al
jne 0x404588
cmp byte [esi + 0x1b4], bl
jne 0x403746
mov ecx, dword [esi + 0xd0]
call fcn.00405159
test al, 2
jg 0x403746
lea edi, [esi + 0xdc]
cmp dword [edi], 0xffffffff
mov byte [esi + 0x1b5], 1
jne 0x40384e
mov dword [edi], 0x2fa
mov ecx, dword [esi + 0xd0]
call fcn.00405159
and dword [edi], eax
mov dword [ebp - 0x24], ebx
jmp 0x403749
test byte [esi + 0xdc], 8
je 0x40389d
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
mov dword [ebp - 0x24], eax
movzx eax, byte [esi + 0x1b7]
push eax
push ecx
push ecx
lea eax, [esi + 0x17c]
mov ecx, esp
push eax
add edi, 0x20
call fcn.00401037
mov ecx, dword [ebp - 0x24]
push 8
call dword [edi]
test byte [esi + 0xdc], 0x10
je 0x4038d7
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
mov dword [ebp - 0x24], eax
movzx eax, byte [esi + 0x1b7]
push eax
push ecx
push ecx
lea eax, [esi + 0x17c]
mov ecx, esp
push eax
add edi, 0x20
call fcn.00401037
mov ecx, dword [ebp - 0x24]
push 0x10
call dword [edi]
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
push ecx
push ecx
mov dword [ebp - 0x24], eax
lea eax, [esi + 0x18c]
mov ecx, esp
push eax
add edi, 0x24
call fcn.00401037
push dword [esi + 0xdc]
mov ecx, dword [ebp - 0x24]
call dword [edi]
cmp byte [esi + 0x1b4], bl
jne 0x403918
cmp byte [esi + 0x1b8], bl
je 0x404588
mov byte [esi + 0x1b6], 1
jmp 0x404588
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x20], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esi + 0xdc], 0xffffffff
jne 0x403948
mov dword [esi + 0xdc], 0x2fa
mov ecx, dword [esi + 0xd0]
call fcn.00405159
and dword [esi + 0xdc], eax
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
push dword [esi + 0xdc]
mov eax, dword [ecx]
call dword [eax + 0x10]
test al, al
jne 0x403992
cmp byte [esi + 0x1b7], bl
jne 0x403992
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x3f5
push 2
push ebx
mov ecx, esi
call fcn.004026eb
cmp byte [esi + 0x1b9], bl
je 0x4039cb
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
push dword [esi + 0xdc]
mov eax, dword [ecx]
call dword [eax + 0x50]
test al, al
je 0x4039cb
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x411
push 3
push ebx
mov ecx, esi
call fcn.004026eb
test byte [esi + 0xdc], 8
je 0x403d4e
lea edi, [esi + 0x18c]
push edi
lea ecx, [ebp - 0x3c]
call fcn.00401037
push edi
lea ecx, [ebp - 0x2c]
call fcn.00401037
lea eax, [esi + 0x17c]
push eax
lea ecx, [ebp - 0x44]
call fcn.00401037
push edi
lea ecx, [ebp - 0x34]
call fcn.00401037
push ecx
push ecx
lea eax, [esi + 0xa0]
mov ecx, esp
push eax
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x3c]
call fcn.00401510
push ecx
push ecx
lea eax, [esi + 0xa8]
mov ecx, esp
push eax
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x2c]
call fcn.00401510
push ecx
push ecx
lea edi, [esi + 0xc0]
mov ecx, esp
push edi
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x44]
call fcn.00401510
push ecx
push ecx
mov ecx, esp
push edi
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x34]
call fcn.00401510
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x50]
call fcn.00401037
push ebx
push 0x40c844
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x50]
call fcn.00401835
lea ecx, [ebp - 0x70]
call fcn.00401471
push ecx
push ecx
mov ecx, esp
push 0x40c838
call fcn.0040140d
lea ecx, [ebp - 0x50]
call fcn.004014d9
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
mov dword [ebp - 0x24], eax
movzx eax, byte [esi + 0x1b7]
push eax
push ecx
push ecx
lea eax, [esi + 0x17c]
mov ecx, esp
add edi, 0x18
push eax
call fcn.00401037
mov ecx, dword [ebp - 0x24]
push 8
call dword [edi]
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
push ecx
push ecx
mov dword [ebp - 0x24], eax
lea eax, [esi + 0x18c]
mov ecx, esp
push eax
add edi, 0x24
call fcn.00401037
mov ecx, dword [ebp - 0x24]
push 8
call dword [edi]
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
push 0xd
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push 8
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
test al, al
je 0x403d26
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push 0xf
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push 4
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
test al, al
je 0x403d26
push ecx
push ecx
lea eax, [ebp - 0x50]
mov ecx, esp
push eax
call fcn.00401037
push 0x10
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push 1
push 2
push ecx
push ecx
lea eax, [ebp - 0x50]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
test al, al
je 0x403d26
cmp dword [ebp - 0x1c], 5
jne 0x403be2
cmp dword [ebp - 0x18], ebx
je 0x403cd6
mov edi, 0x200
test dword [esi + 0xdc], edi
je 0x403cd6
push ecx
push ecx
lea eax, [ebp - 0x44]
mov ecx, esp
push eax
call fcn.00401037
push 0x13
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
mov ecx, dword [esi + 0xd0]
lea eax, [ebp - 0x44]
push eax
push edi
call fcn.004066d2
sub eax, ebx
je 0x403cb2
dec eax
je 0x403c94
dec eax
jne 0x403cd6
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push edi
push ecx
push ecx
lea eax, [ebp - 0x34]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
push ecx
push ecx
lea eax, [ebp - 0x44]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x34]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.00405ad3
push ecx
push ecx
lea eax, [ebp - 0x44]
mov ecx, esp
push eax
call fcn.00401037
push 0x414
push 2
push ebx
mov ecx, esi
call fcn.004026eb
jmp 0x403cd6
push ecx
push ecx
lea eax, [ebp - 0x44]
mov ecx, esp
push eax
call fcn.00401037
push 0x410
push 2
push ebx
mov ecx, esi
call fcn.004026eb
jmp 0x403d26
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push edi
push ecx
push ecx
lea eax, [ebp - 0x44]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
mov dword [ebp - 0x24], eax
add edi, 0x1c
cmp byte [esi + 0x1b8], bl
sete al
movzx eax, al
push eax
push ecx
push ecx
lea eax, [esi + 0x17c]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [ebp - 0x24]
push 8
call dword [edi]
lea ecx, [ebp - 0x50]
call fcn.00401471
lea ecx, [ebp - 0x34]
call fcn.00401471
lea ecx, [ebp - 0x44]
call fcn.00401471
lea ecx, [ebp - 0x2c]
call fcn.00401471
lea ecx, [ebp - 0x3c]
call fcn.00401471
test byte [esi + 0xdc], 0x10
je 0x404588
lea edi, [esi + 0x18c]
push edi
lea ecx, [ebp - 0x50]
call fcn.00401037
push edi
lea ecx, [ebp - 0x3c]
call fcn.00401037
lea eax, [esi + 0x17c]
push eax
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x24], eax
call fcn.00401037
push edi
lea ecx, [ebp - 0x34]
call fcn.00401037
push ecx
push ecx
lea eax, [esi + 0xb0]
mov ecx, esp
push eax
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x50]
call fcn.00401510
push ecx
push ecx
lea eax, [esi + 0xb8]
mov ecx, esp
push eax
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x3c]
call fcn.00401510
push ecx
push ecx
lea edi, [esi + 0xc0]
mov ecx, esp
push edi
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x2c]
call fcn.00401510
push ecx
push ecx
mov ecx, esp
push edi
call fcn.00401037
push 0x5c
lea ecx, [ebp - 0x34]
call fcn.00401510
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
mov dword [ebp - 0x40], eax
movzx eax, byte [esi + 0x1b7]
push eax
push ecx
push ecx
mov ecx, esp
push dword [ebp - 0x24]
add edi, 0x18
call fcn.00401037
mov ecx, dword [ebp - 0x40]
push 0x10
call dword [edi]
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
push ecx
push ecx
mov dword [ebp - 0x40], eax
lea eax, [esi + 0x18c]
mov ecx, esp
push eax
add edi, 0x24
call fcn.00401037
mov ecx, dword [ebp - 0x40]
push 0x10
call dword [edi]
push ecx
push ecx
lea eax, [ebp - 0x50]
mov ecx, esp
push eax
call fcn.00401037
push 0xe
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push 0x10
push ecx
push ecx
lea eax, [ebp - 0x50]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
test al, al
je 0x404067
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
push 0xf
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push 4
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
test al, al
je 0x404067
push ecx
push ecx
mov ecx, esp
lea edi, [esi + 0x18c]
push edi
call fcn.00401037
push 0x11
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push 0x100
push ecx
push ecx
mov ecx, esp
push edi
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
test al, al
je 0x404067
cmp dword [ebp - 0x1c], 5
jne 0x403f27
cmp dword [ebp - 0x18], ebx
je 0x40401b
mov edi, 0x200
test dword [esi + 0xdc], edi
je 0x40401b
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push 0x13
push ebx
push ebx
mov ecx, esi
call fcn.004026eb
mov ecx, dword [esi + 0xd0]
lea eax, [ebp - 0x2c]
push eax
push edi
call fcn.004066d2
sub eax, ebx
je 0x403ff7
dec eax
je 0x403fd9
dec eax
jne 0x40401b
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push edi
push ecx
push ecx
lea eax, [ebp - 0x34]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x34]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.00405ad3
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push 0x414
push 2
push ebx
mov ecx, esi
call fcn.004026eb
jmp 0x40401b
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push 0x410
push 2
push ebx
mov ecx, esi
call fcn.004026eb
jmp 0x404067
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 1
push edi
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
mov ecx, esi
call fcn.0040213c
mov eax, dword [eax + 0xc]
mov edi, dword [eax]
add edi, 0x1c
cmp byte [esi + 0x1b8], bl
mov dword [ebp - 0x40], eax
sete al
movzx eax, al
push eax
push ecx
push ecx
mov ecx, esp
push dword [ebp - 0x24]
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x50]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [ebp - 0x40]
push 0x10
call dword [edi]
lea ecx, [ebp - 0x34]
call fcn.00401471
lea ecx, [ebp - 0x2c]
call fcn.00401471
lea ecx, [ebp - 0x3c]
call fcn.00401471
lea ecx, [ebp - 0x50]
jmp 0x404583
push 0x40c7e8
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x30], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
push ecx
cmp eax, 0xb7
mov ecx, esp
sete byte [ebp - 0x45]
call fcn.0040102d
cmp byte [ebp - 0x45], bl
push 0x3f3
sete al
movzx eax, al
push 3
push eax
mov ecx, esi
call fcn.004026eb
lea eax, [esi + 0xe4]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00401037
push ebx
push 0x40c844
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00401835
lea ecx, [ebp - 0x58]
call fcn.00401471
push ecx
push ecx
mov ecx, esp
push 0x40c838
call fcn.0040140d
lea ecx, [ebp - 0x2c]
call fcn.004014d9
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.00405f57
test al, al
jne 0x404146
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push ebx
push 2
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0xd0]
call fcn.004065cd
push 0x10
call fcn.004048b9
mov edi, eax
pop ecx
cmp edi, ebx
je 0x40416d
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push esi
mov ecx, edi
call fcn.00407020
mov edi, eax
jmp 0x40416f
xor edi, edi
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
jne 0x404190
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x3ef
push 3
push ebx
mov ecx, esi
call fcn.004026eb
jmp 0x404195
mov eax, dword [ecx]
call dword [eax + 0x3c]
mov ecx, edi
call fcn.00406f7f
push edi
call fcn.004048cd
pop ecx
lea ecx, [ebp - 0x2c]
call fcn.00401471
cmp dword [ebp - 0x30], ebx
je 0x404588
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x404588
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 8]
push esi
mov dword [esi + 0x1a8], eax
mov edx, dword [eax]
push 0x406791
mov ecx, eax
call dword [edx]
push 0x40c798
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x30], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
lea edi, [esi + 0x1c0]
cmp dword [edi], ebx
je 0x404217
push ecx
push ecx
lea eax, [esi + 0x1c4]
mov ecx, esp
push eax
call fcn.00401037
push dword [edi]
jmp 0x404295
cmp eax, 0xb7
jne 0x40422e
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x3f3
jmp 0x404295
mov eax, dword [esi + 0x1bc]
cmp eax, ebx
je 0x40425e
dec eax
je 0x40424e
dec eax
jne 0x4042b3
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x3fe
jmp 0x404295
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x3f4
jmp 0x404295
cmp byte [esi + 0x1b5], bl
je 0x4042a1
cmp byte [esi + 0x1b7], bl
jne 0x4042a1
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
push dword [esi + 0xdc]
mov eax, dword [ecx]
call dword [eax + 0x10]
test al, al
jne 0x4042a1
push ecx
push ecx
mov ecx, esp
call fcn.0040102d
push 0x3f5
push 2
push ebx
mov ecx, esi
call fcn.004026eb
jmp 0x4042b3
push dword [ebp - 0x24]
mov ecx, dword [esi + 0x1a8]
mov eax, dword [ecx]
push 6
push 3
call dword [eax + 0xc]
cmp byte [esi + 0x1b5], bl
je 0x4042ca
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 0x70]
mov ecx, dword [esi + 0x1a8]
mov dword [esi + 0xd8], ebx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov dword [ebp - 0x24], eax
cmp dword [esi + 0x1a8], ebx
je 0x404301
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
push dword [esi + 0x1a8]
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [esi + 0x1a8], ebx
mov edi, 0x40f
cmp dword [ebp - 0x24], edi
jne 0x40433c
mov ecx, esi
call fcn.0040213c
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 0x7c]
test al, al
jne 0x4041ab
push ecx
push ecx
mov ecx, esp
mov byte [esi + 0x1cc], bl
call fcn.0040102d
push edi
push 2
push ebx
mov ecx, esi
call fcn.004026eb
cmp dword [ebp - 0x24], 5
jne 0x4041ab
cmp dword [ebp - 0x30], ebx
je 0x404354
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esi + 0x1a8], ebx
je 0x40437f
mov ecx, esi
call fcn.0040213c
test eax, eax
je 0x40437f
mov esi, dword [esi + 0x1a8]
mov eax, dword [esi]
push 5
push 5
push 3
mov ecx, esi
call dword [eax + 0xc]
jmp 0x404588
mov ecx, dword [esi + 0xd0]
lea eax, [ebp - 0x2c]
push eax
call fcn.00405cd1
push ebx
push 0x40c844
lea eax, [ebp - 0x68]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00401835
lea ecx, [ebp - 0x68]
call fcn.00401471
push ecx
push ecx
lea eax, [esi + 0x98]
mov ecx, esp
push eax
call fcn.00401037
push 0x5c
push ecx
push ecx
mov ecx, esp
push 0x40c78c
call fcn.0040140d
lea ecx, [ebp - 0x2c]
call fcn.004014d9
mov ecx, eax
call fcn.00401510
push 0x20
call fcn.004048b9
mov edi, eax
pop ecx
cmp edi, ebx
je 0x4043f7
push ebx
mov ecx, esi
call fcn.0040213c
push eax
mov ecx, edi
call fcn.004086d4
jmp 0x4043f9
xor eax, eax
push 0x10
mov dword [esi + 0x1a8], eax
call fcn.004048b9
mov edi, eax
pop ecx
cmp edi, ebx
je 0x40442d
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push dword [esi + 0x1a8]
mov ecx, edi
push esi
call fcn.004067e4
mov dword [ebp - 0x24], eax
jmp 0x404430
mov dword [ebp - 0x24], ebx
push dword [ebp - 0x24]
mov ecx, dword [esi + 0x1a8]
mov eax, dword [ecx]
push 0x4067e1
call dword [eax]
mov eax, dword [esi + 0x1a8]
mov ecx, dword [ebp - 0x24]
mov edi, dword [eax]
call fcn.00406db1
mov ecx, dword [esi + 0x1a8]
push eax
call dword [edi + 8]
push 0x38
call fcn.004048b9
pop ecx
cmp eax, ebx
je 0x404471
mov ecx, eax
call fcn.004049b1
jmp 0x404473
xor eax, eax
push dword [ebp - 0x24]
mov ecx, eax
push 0x406c7e
mov dword [esi + 0x1ac], eax
call fcn.00404a20
push 0x40c6d8
lea ecx, [ebp - 0x3c]
call fcn.0040140d
mov eax, dword [esi + 0xdc]
cmp eax, 8
jne 0x4044ab
push ecx
push ecx
mov ecx, esp
push 0x40c6c4
jmp 0x4044b9
cmp eax, 0x10
jne 0x4044c6
push ecx
push ecx
mov ecx, esp
push 0x40c6b0
call fcn.0040140d
lea ecx, [ebp - 0x3c]
call fcn.004014d9
push ecx
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
push eax
call fcn.00401037
mov ecx, dword [esi + 0x1ac]
call fcn.00404eb6
mov ecx, dword [esi + 0x1a8]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [esi + 0x1ac]
mov dword [ebp - 0x40], eax
call fcn.004049f1
cmp dword [ebp - 0x24], ebx
je 0x404506
mov ecx, dword [ebp - 0x24]
push 1
call fcn.004027b8
mov edi, dword [esi + 0x1a8]
cmp edi, ebx
je 0x40451e
mov ecx, edi
call fcn.00407ce8
push edi
call fcn.004048cd
pop ecx
cmp dword [ebp - 0x40], 0x64
mov dword [esi + 0x1a8], ebx
jne 0x404578
push ecx
push ecx
mov ecx, esp
push ebx
push 0xa
push dword [esi + 0x1d0]
call fcn.00401427
push 0x40c6a4
lea ecx, [ebp - 0x60]
call fcn.0040140d
mov ecx, eax
call fcn.004014d9
push ecx
push ecx
mov ecx, esp
push eax
call fcn.00401037
push ecx
push ecx
lea eax, [ebp - 0x2c]
mov ecx, esp
push eax
call fcn.00401037
push 1
mov ecx, esi
call fcn.004035b0
lea ecx, [ebp - 0x60]
call fcn.00401471
lea ecx, [ebp - 0x3c]
call fcn.00401471
lea ecx, [ebp - 0x2c]
call fcn.00401471
mov ecx, dword [ebp + 0x74]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.00408e81
add ebp, 0x78
leave
ret