Function at 0x409390
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x44b339
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3c
mov eax, dword [0x45f540]
mov edx, dword [esp + 0x58]
xor eax, esp
push ebx
push ebp
mov ebp, dword [esp + 0x54]
push esi
push edi
push 0xa
push 0x40100000
mov edi, ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x68]
push 0x3e800000
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x78]
push 0x3f400000
mov dword [esp + 0x50], ecx
lea ecx, [edi + 0x18]
push 0x11
mov dword [esp + 0x48], edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x3c], eax
mov dword [edi], 0x44e1b8
call fcn.004086c0
mov dword [esp + 0x54], 0
call fcn.00443920
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [edi + 0x48], eax
mov dword [edi + 0x50], 0
mov ecx, dword [0x45dbd4]
mov ebx, dword [0x45dbdc]
mov esi, dword [0x45dbcc]
imul ebx, ebx, 0xdbb5
mov eax, 0xbf1fa759
imul ecx
add edx, ecx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebx, eax
mov eax, 0xbf1fa759
imul esi
add edx, esi
sar edx, 0x10
add ebx, edx
mov eax, edx
mov edx, dword [0x45dbe8]
imul edx, edx, 0x156ac
shr eax, 0x1f
add eax, ebx
add eax, edx
mov ebx, eax
mov eax, 0xca9db4d5
imul ecx
add edx, ecx
sar edx, 0x10
add ebx, edx
mov ecx, edx
mov edx, esi
imul edx, edx, 0x14289
shr ecx, 0x1f
add ecx, ebx
add ecx, edx
mov eax, 0x7f55e343
imul esi
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov byte [esp + 0x54], 2
sub ecx, eax
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
mov dword [str._r_____r____], ecx
mov ecx, dword [esp + 0x40]
lea eax, [edi + 8]
mov dword [eax], ebp
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov dword [edi + 4], 1
mov ecx, dword [0x45dbd4]
mov eax, 0x9524e185
imul ecx
add edx, ecx
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x45dbe8]
imul edx, edx, 0x156ac
mov ebx, eax
sub ebx, edx
mov eax, 0xca9db4d5
imul ecx
add edx, ecx
mov ecx, dword [0x45dbe0]
sar edx, 0x10
imul ecx, ecx, 0x14289
add ebx, edx
mov eax, edx
mov edx, dword [0x45dbe4]
shr eax, 0x1f
imul edx, edx, 0x3f76
add eax, ebx
add eax, ecx
mov ecx, dword [0x45dbcc]
add eax, edx
mov ebx, eax
mov eax, 0x72c3c0b5
imul ecx
mov ecx, dword [esp + 0x28]
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add ebx, edx
mov edx, dword [str._r_____r____]
add eax, ebx
sub eax, edx
push ecx
mov ecx, dword [esp + 0x44]
add eax, 0x11aa4
lea edx, [esp + 0x1c]
push edx
mov edx, dword [esp + 0x4c]
mov dword [0x45dbcc], eax
sub esp, 0x10
mov eax, esp
mov dword [eax], ebp
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
mov byte [esp + 0x2b], 0
mov dword [eax + 0xc], edx
call fcn.004056e0
mov esi, dword [str._r_____r____]
mov ecx, dword [0x45dbdc]
mov ebx, eax
mov eax, dword [0x45dbd8]
lea ebp, [eax + esi]
imul esi, esi, 0x14373
mov eax, 0xca9db4d5
imul ebp, ebp, 0xdbb5
imul ecx
add edx, ecx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add ebp, edx
add eax, ebp
add esp, 0x18
add eax, esi
mov edx, ecx
imul edx, edx, 0x14289
mov esi, dword [0x45dbe0]
add eax, edx
mov ebp, eax
mov eax, 0x72c3c0b5
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebp, eax
test ebx, ebx
lea ebp, [esi + ebp - 0x3f76]
mov dword [0x45dbd4], ebp
jl 0x409b80
mov ebx, dword [0x45dbcc]
imul ecx, ecx, 0x3f76
imul esi, esi, 0x8af5
mov edx, dword [0x45dbd0]
lea ebp, [edx + ebx]
mov eax, 0x9524e185
imul ebp, ebp, 0x10156
imul ebx
add edx, ebx
mov ebx, dword [0x45dbe4]
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebp, eax
mov eax, 0xbf1fa759
imul ebx
add edx, ebx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add ebp, edx
add eax, ebp
mov ebp, eax
mov eax, 0xca9db4d5
imul ebx
add edx, ebx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add ebp, edx
add eax, ebp
add eax, ecx
add eax, esi
mov dword [0x45dbdc], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x409724
mov eax, dword [0x45dbd4]
mov ecx, dword [0x45dbc8]
lea esi, [ecx + eax]
mov ecx, dword [0x45dbe4]
imul esi, esi, 0x8ec3
mov eax, 0xbf1fa759
imul ecx
add edx, ecx
mov ecx, dword [0x45dbd8]
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0xca9db4d5
imul ecx
add edx, ecx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [str._r_____r____]
sub esi, eax
mov eax, edx
imul eax, eax, 0x14373
add esi, eax
mov eax, 0x39f7b4f
imul edx
sar edx, 0xa
add esi, edx
mov ebx, edx
mov eax, 0x7f55e343
imul ecx
mov eax, dword [esp + 0x2c]
sar edx, 0xf
shr ebx, 0x1f
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add ebx, esi
sub ebx, ecx
mov dword [0x45dbe4], ebx
cmp dword [eax + 0x28], 4
jne 0x409719
mov byte [esp + 0x13], 1
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x4c]
mov esi, dword [0x45dbc8]
mov ebx, dword [0x45dbe4]
mov eax, 0xca9db4d5
imul esi
add edx, esi
sar edx, 0x10
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [0x45dbd8]
imul edx, edx, 0x14289
add ecx, edx
mov eax, ebx
imul eax, eax, 0x3f76
sub ecx, eax
mov eax, 0x72c3c0b5
imul esi
sar edx, 0xe
add ecx, edx
mov ebp, edx
mov eax, 0x3af417
imul dword [str._r_____r____]
mov al, byte [esp + 0x13]
shr ebp, 0x1f
add ebp, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub ebp, ecx
mov ecx, dword [0x45dbd0]
mov edx, ecx
imul edx, edx, 0xea
sub ebp, edx
test al, al
mov dword [0x45dbe8], ebp
je 0x409b04
mov eax, 0x9524e185
imul esi, esi, 0x3f76
imul ebx
add edx, ebx
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov eax, 0x32cc2d1b
imul ecx
sar edx, 0xe
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov eax, 0x8116582f
imul ecx
add edx, ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x3af417
imul ecx
mov ecx, dword [0x45dbe0]
sar edx, 5
imul ecx, ecx, 0x5556
sub ecx, dword [esp + 0x1c]
mov eax, edx
shr eax, 0x1f
imul ecx, ecx, 0x3f77
add eax, edx
mov edx, dword [esp + 0x14]
add esi, eax
add esi, edx
add esi, ebx
imul esi, esi, 0x3f76
add esi, eax
add ecx, esi
add ecx, edx
add ecx, ebx
mov eax, 0x2fd0003
imul ebp
mov dword [0x45dbc8], ecx
imul ecx, ecx, 0x14373
sar edx, 0xa
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ecx
mov ecx, dword [0x45dbd4]
mov eax, 0xca9db4d5
imul ecx
add edx, ecx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x32cc2d1b
imul ebp
imul ebp, ebp, 0x3f76
sar edx, 0xe
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub esi, ecx
mov ecx, dword [0x45dbe0]
mov eax, 0x72c3c0b5
imul ecx
imul ecx, ecx, 0x8ec3
sar edx, 0xe
sub esi, ebp
mov eax, edx
shr eax, 0x1f
add esi, edx
add eax, esi
add eax, ecx
mov dword [esp + 0x24], 0
mov dword [0x45dbd8], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x1c]
push edx
push 0
push eax
call dword [ecx + 0x14]
test eax, eax
jl 0x409af2
jmp 0x4098d0
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x30]
push edx
push 1
lea edx, [esp + 0x1c]
push edx
mov edx, dword [esp + 0x28]
mov edx, dword [edx]
push edx
push eax
call dword [ecx + 0x1c]
test eax, eax
jl 0x4099da
cmp dword [esp + 0x30], 1
jb 0x4099da
mov ecx, dword [0x45dbe8]
mov esi, dword [0x45dbd4]
mov eax, 0x2fd0003
imul ecx
mov eax, dword [0x45dbc8]
imul eax, eax, 0x14373
sar edx, 0xa
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
add ebx, eax
mov eax, 0xca9db4d5
imul esi
add edx, esi
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebx, eax
mov eax, 0x32cc2d1b
imul ecx
imul ecx, ecx, 0x3f76
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebx, eax
sub ebx, ecx
mov ecx, dword [0x45dbe0]
mov eax, 0x72c3c0b5
imul ecx
imul ecx, ecx, 0x8ec3
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add ebx, edx
add eax, ebx
add eax, ecx
mov ecx, dword [esp + 0x14]
push ecx
lea ecx, [esp + 0x24]
mov dword [0x45dbd8], eax
call fcn.004092d0
mov esi, eax
mov edx, dword [esp + 0x1c]
mov eax, dword [edx]
push eax
lea ecx, [edi + 0x18]
mov byte [esp + 0x58], 3
call fcn.00408cf0
push esi
mov ecx, eax
call fcn.00408850
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x54], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4099cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ecx, dword [esp + 0x24]
mov esi, dword [0x45dbe0]
inc ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [0x45dbe4]
mov eax, 0x9524e185
imul ecx
add edx, ecx
sar edx, 0xf
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov ebx, esi
imul ebx, ebx, 0x5556
sub ebx, ecx
mov ecx, dword [0x45dbd0]
mov eax, 0x32cc2d1b
imul ecx
sar edx, 0xe
add ebx, edx
mov ebp, edx
mov edx, dword [0x45dbc8]
imul edx, edx, 0x3f76
shr ebp, 0x1f
add ebp, ebx
add ebp, edx
mov eax, 0x8116582f
imul ecx
add edx, ecx
sar edx, 0xd
add ebp, edx
mov ebx, edx
mov eax, 0x3af417
imul ecx
shr ebx, 0x1f
add ebx, ebp
mov ebp, dword [0x45dbe8]
sar edx, 5
add ebx, edx
mov ecx, edx
shr ecx, 0x1f
add ecx, ebx
mov eax, 0x2fd0003
imul ebp
mov dword [0x45dbc8], ecx
imul ecx, ecx, 0x14373
sar edx, 0xa
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
add ebx, ecx
mov ecx, dword [0x45dbd4]
mov eax, 0xca9db4d5
imul ecx
add edx, ecx
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebx, eax
mov eax, 0x32cc2d1b
imul ebp
imul ebp, ebp, 0x3f76
sar edx, 0xe
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x72c3c0b5
imul esi
imul esi, esi, 0x8ec3
sub ebx, ecx
sar edx, 0xe
sub ebx, ebp
mov eax, edx
shr eax, 0x1f
add ebx, edx
add eax, ebx
add eax, esi
mov dword [0x45dbd8], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x1c]
push edx
mov edx, dword [esp + 0x28]
push edx
push eax
call dword [ecx + 0x14]
test eax, eax
jge 0x4098d0
mov ebx, dword [0x45dbe4]
mov ecx, dword [0x45dbd0]
mov esi, dword [0x45dbc8]
mov eax, 0xca9db4d5
imul ebx, ebx, 0x3f76
imul ecx, ecx, 0xea
imul esi
mov eax, dword [0x45dbd8]
add edx, esi
imul eax, eax, 0x14289
sar edx, 0x10
mov ebp, edx
shr ebp, 0x1f
add ebp, edx
add ebp, eax
mov eax, 0x72c3c0b5
imul esi
sar edx, 0xe
sub ebp, ebx
mov esi, edx
add ebp, edx
mov eax, 0x3af417
imul dword [str._r_____r____]
sar edx, 5
shr esi, 0x1f
mov eax, edx
shr eax, 0x1f
add esi, ebp
add eax, edx
sub esi, eax
mov eax, dword [esp + 0x18]
sub esi, ecx
mov dword [0x45dbe8], esi
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ebp, dword [0x45dbd4]
mov ecx, dword [0x45dbdc]
mov esi, dword [0x45dbe0]
mov ebx, dword [0x45dbcc]
imul ecx, ecx, 0xdbb5
mov eax, 0xbf1fa759
imul ebp
add edx, ebp
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
mov eax, 0xbf1fa759
imul ebx
add edx, ebx
sar edx, 0x10
add ecx, edx
mov eax, edx
shr eax, 0x1f
add eax, ecx
mov ecx, dword [0x45dbe8]
imul ecx, ecx, 0x156ac
add eax, ecx
mov dword [esp + 0x20], eax
mov eax, 0xca9db4d5
imul ebp
mov eax, dword [esp + 0x20]
add edx, ebp
sar edx, 0x10
add eax, edx
mov ecx, edx
mov edx, ebx
imul edx, edx, 0x14289
shr ecx, 0x1f
add ecx, eax
add ecx, edx
mov eax, 0x7f55e343
imul ebx
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
mov al, byte [esp + 0x13]
test al, al
mov dword [str._r_____r____], ecx
jne 0x409c35
mov ecx, dword [0x452a70]
mov dword [edi + 8], ecx
mov edx, dword [0x452a74]
mov dword [edi + 0xc], edx
mov eax, dword [0x452a78]
mov dword [edi + 0x10], eax
mov ecx, dword [0x452a7c]
mov dword [edi + 0x14], ecx
mov esi, dword [0x45dbe0]
mov ecx, dword [0x45dbe4]
imul esi, esi, 0x5556
mov eax, 0x9524e185
imul ecx
add edx, ecx
mov ecx, dword [0x45dbd0]
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
mov eax, 0x32cc2d1b
imul ecx
sar edx, 0xe
add esi, edx
mov ebx, edx
mov edx, dword [0x45dbc8]
imul edx, edx, 0x3f76
shr ebx, 0x1f
add ebx, esi
add ebx, edx
mov eax, 0x8116582f
imul ecx
add edx, ecx
sar edx, 0xd
add ebx, edx
mov esi, edx
mov eax, 0x3af417
imul ecx
shr esi, 0x1f
sar edx, 5
add esi, ebx
mov eax, edx
shr eax, 0x1f
add esi, edx
add eax, esi
mov dword [0x45dbc8], eax
lea eax, [edi + 0x50]
xor esi, esi
cmp eax, esi
je 0x409cd4
mov ecx, dword [esp + 0x28]
cmp ecx, esi
mov ebx, dword [eax]
mov dword [eax], esi
je 0x409cca
mov edx, dword [ecx]
push eax
push 0x44e414
push ecx
call dword [edx]
cmp ebx, esi
je 0x409cd4
mov eax, dword [ebx]
push ebx
call dword [eax + 8]
mov dword [edi + 0x54], esi
mov ecx, dword [0x45dbd4]
mov eax, 0x9524e185
imul ecx
add edx, ecx
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x45dbe8]
imul edx, edx, 0x156ac
mov ebx, eax
sub ebx, edx
mov eax, 0xca9db4d5
imul ecx
mov eax, dword [0x45dbe0]
add edx, ecx
imul eax, eax, 0x14289
mov ecx, dword [0x45dbe4]
sar edx, 0x10
imul ecx, ecx, 0x3f76
add ebx, edx
mov ebp, edx
shr ebp, 0x1f
add ebp, ebx
add ebp, eax
add ebp, ecx
mov ecx, dword [0x45dbcc]
mov eax, 0x72c3c0b5
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add ebp, edx
mov edx, dword [str._r_____r____]
add eax, ebp
sub eax, edx
add eax, 0x11aa4
mov dword [0x45dbcc], eax
mov dword [edi + 0x58], esi
mov dword [edi + 0x5c], esi
mov ecx, dword [0x45dbd8]
mov ebx, dword [0x45dbc8]
mov esi, dword [0x45dbdc]
imul ebx, ebx, 0xdbb5
mov edx, ecx
imul edx, edx, 0x156e6
add ebx, edx
mov eax, 0xbf1fa759
imul esi
add edx, esi
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x45dbe8]
imul edx, edx, 0x156ac
sub ebx, eax
add ebx, edx
mov eax, 0x8116582f
imul ecx
add edx, ecx
mov ecx, dword [0x45dbd0]
sar edx, 0xd
add ebx, edx
mov esi, edx
mov eax, 0x39f7b4f
imul ecx
mov ecx, dword [0x45dbe4]
sar edx, 0xa
shr esi, 0x1f
mov eax, edx
shr eax, 0x1f
add esi, ebx
add eax, edx
sub esi, eax
sub esi, ecx
mov ecx, dword [esp + 0x4c]
sub esi, 0x3f76
mov dword [0x45dbd0], esi
mov eax, edi
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x40]
pop ebp
pop ebx
xor ecx, esp
call fcn.0043065d
add esp, 0x48
ret 0x14