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

Disassembly:
sub esp, 0x124
push ebp
push edi
mov edi, dword [esp + 0x130]
mov ebp, 0x6bb0d4
mov dword [esp + 0x28], 0
mov dword [edi], ebp
mov eax, ebp
mov ecx, 1
lock xadd dword [eax], ecx
call fcn.00505690
test eax, eax
je 0x50577b
cmp dword [eax], 0
jne 0x505815
cmp dword [esp + 0x134], 0xb
ja case.0x505790.8
mov edx, dword [esp + 0x134]
jmp dword [edx*4 + 0x5062b8]
mov eax, 0x633b5c
jmp 0x5057e2
mov eax, 0x633d6c
jmp 0x5057e2
mov eax, 0x633f7c
jmp 0x5057e2
mov eax, 0x63418c
jmp 0x5057e2
mov eax, 0x63439c
jmp 0x5057e2
mov eax, 0x6345ac
jmp 0x5057e2
mov eax, 0x6347bc
jmp 0x5057e2
mov eax, 0x6349cc
jmp 0x5057e2
mov eax, 0x634bdc
jmp 0x5057e2
mov eax, 0x634dec
jmp 0x5057e2
mov eax, 0x634ffc
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.004b96c0
add esp, 0xc
push eax
mov ecx, edi
call fcn.004b7cb0
mov ecx, dword [esp + 0x64]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne case.0x505790.8
mov eax, dword [esp + 0x64]
push eax
jmp 0x5060c4
mov dword [esp + 0xc], ebp
mov ecx, ebp
mov edx, 1
lock xadd dword [ecx], edx
mov dword [esp + 0x14], ebp
mov eax, ebp
mov ecx, 1
lock xadd dword [eax], ecx
mov eax, dword [esp + 0x134]
cmp eax, 0xb
ja case.default.0x505843
jmp dword [eax*4 + 0x5062e8]
mov dword [esp + 0xd4], str.Prefix
lea edx, [esp + 0xd4]
jmp 0x505a40
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0xa4], str.Documentation
call fcn.004ba8b0
lea ecx, [esp + 0xdc]
push ecx
mov dword [esp + 0xe0], 0x6352d8
lea ecx, [esp + 0x18]
jmp 0x505a45
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xac], str.Headers
call fcn.004ba8b0
lea eax, [esp + 0x98]
mov dword [esp + 0x98], str.include
push eax
lea ecx, [esp + 0x18]
jmp 0x505a45
lea ecx, [esp + 0xb0]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xb4], str.Libraries
call fcn.004ba8b0
mov dword [esp + 0xcc], 0x6352b8
lea edx, [esp + 0xcc]
lea ecx, [esp + 0x14]
jmp 0x505a44
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0xbc], str.Binaries
call fcn.004ba8b0
lea ecx, [esp + 0xd0]
push ecx
mov dword [esp + 0xd4], 0x6352a8
lea ecx, [esp + 0x18]
jmp 0x505a45
lea edx, [esp + 0xc0]
push edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xc4], str.Plugins
call fcn.004ba8b0
lea eax, [esp + 0xd8]
mov dword [esp + 0xd8], str.plugins
push eax
lea ecx, [esp + 0x18]
jmp 0x505a45
lea ecx, [esp + 0xc8]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xcc], str.Imports
call fcn.004ba8b0
mov dword [esp + 0xe0], str.imports
lea edx, [esp + 0xe0]
lea ecx, [esp + 0x14]
jmp 0x505a44
lea eax, [esp + 0x9c]
mov dword [esp + 0x9c], 0x635280
push eax
lea ecx, [esp + 0x10]
jmp 0x505a45
lea ecx, [esp + 0xa4]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xa8], str.Translations
call fcn.004ba8b0
mov dword [esp + 0xac], str.translations
lea edx, [esp + 0xac]
lea ecx, [esp + 0x14]
jmp 0x505a44
lea eax, [esp + 0xb4]
mov dword [esp + 0xb4], 0x635254
push eax
lea ecx, [esp + 0x10]
jmp 0x505a45
lea ecx, [esp + 0xbc]
push ecx
mov dword [esp + 0xc0], str.Examples
lea ecx, [esp + 0x10]
jmp 0x505a45
mov dword [esp + 0xc4], str.Demos
lea edx, [esp + 0xc4]
lea ecx, [esp + 0xc]
push edx
call fcn.004ba8b0
cmp dword [esp + 0xc], ebp
je 0x506098
push ebx
push esi
call fcn.00505690
xor esi, esi
cmp eax, esi
je 0x505a65
mov ebx, dword [eax]
jmp 0x505a67
xor ebx, ebx
push 0xffffffffffffffff
push str.Paths
mov dword [esp + 0x48], ebx
call fcn.004b7f60
mov dword [esp + 0x5c], eax
add esp, 8
lea eax, [esp + 0x54]
push eax
mov ecx, ebx
call fcn.004c29e0
mov ecx, dword [esp + 0x54]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505aa4
mov eax, dword [esp + 0x54]
push eax
call fcn.004b7ca0
add esp, 4
mov dword [esp + 0x34], ebp
mov ecx, ebp
mov edx, 1
lock xadd dword [ecx], edx
lea eax, [esp + 0x38]
push eax
mov ecx, ebx
mov dword [esp + 0x94], esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x8c], esi
call fcn.004c1de0
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
xor ecx, ecx
mov dword [esp + 0x78], ecx
test edx, edx
jle 0x505da0
lea esp, [esp]
mov edx, dword [eax + 8]
add edx, ecx
lea eax, [eax + edx*4 + 0x14]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov ecx, 1
lock xadd dword [eax], ecx
push 1
push 0
lea eax, [esp + 0x56]
push eax
lea ecx, [esp + 0x24]
mov edx, 0x2e
push ecx
lea ecx, [esp + 0x30]
mov word [esp + 0x5e], dx
call fcn.004be1f0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
test eax, eax
jle 0x505d26
cmp eax, 4
jge 0x505d26
mov edx, dword [ecx]
or edi, 0xffffffff
or esi, edi
cmp edx, 1
je 0x505b61
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 4]
push ecx
lea ecx, [esp + 0x1c]
call fcn.00401e6a
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 8]
push 0xa
lea edx, [esp + 0x17]
push edx
lea ecx, [eax + ecx*4 + 0x14]
call fcn.004b8170
cmp byte [esp + 0x13], 0
mov ebp, eax
je 0x506138
test ebp, ebp
jl 0x506138
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
cmp edx, 2
jl 0x505bdc
push 0xa
lea eax, [esp + 0x17]
push eax
push 1
lea ecx, [esp + 0x24]
call fcn.00401d3d
mov ecx, eax
call fcn.004b8170
cmp byte [esp + 0x13], 0
mov edi, eax
jne 0x505bd5
lea ecx, [esp + 0x18]
call fcn.00401113
lea ecx, [esp + 0x20]
call fcn.004010b0
jmp 0x505d75
test edi, edi
jge 0x505bdc
or edi, 0xffffffff
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ecx, 3
jl 0x505c14
push 0xa
lea edx, [esp + 0x17]
push edx
push 2
lea ecx, [esp + 0x24]
call fcn.00401d3d
mov ecx, eax
call fcn.004b8170
cmp byte [esp + 0x13], 0
mov esi, eax
je 0x505bbe
test esi, esi
jge 0x505c14
or esi, 0xffffffff
cmp ebp, dword [esp + 0x90]
jl 0x505cb3
cmp ebp, 4
jg 0x505cb3
cmp edi, 0xffffffff
je 0x505c3a
cmp edi, dword [esp + 0x70]
jl 0x505cb3
cmp edi, 8
jg 0x505cb3
cmp esi, 0xffffffff
je 0x505c4d
cmp esi, dword [esp + 0x88]
jl 0x505cb3
cmp esi, 6
jg 0x505cb3
lea ecx, [esp + 0x27]
mov dword [esp + 0xf0], ecx
lea eax, [esp + 0x20]
lea ecx, [esp + 0x80]
mov dword [esp + 0xec], eax
lea edx, [esp + 0xec]
lea eax, [esp + 0x14]
push ecx
lea ecx, [esp + 0x110]
mov byte [esp + 0x2b], 0x2f
mov dword [esp + 0x110], edx
mov dword [esp + 0x114], eax
call fcn.004ef430
mov ecx, dword [esp + 0x40]
or dword [esp + 0x30], 1
lea edx, [esp + 0x80]
push edx
call fcn.004c0d20
test al, al
je 0x505cb3
mov bl, 1
jmp 0x505cb5
xor bl, bl
test byte [esp + 0x30], 1
je 0x505ccd
and dword [esp + 0x30], 0xfffffffe
lea ecx, [esp + 0x80]
call fcn.004010b0
test bl, bl
je 0x505d26
lea ecx, [esp + 0x26]
lea edx, [esp + 0x68]
lea eax, [esp + 0x20]
mov dword [esp + 0x108], ecx
push edx
lea ecx, [esp + 0x108]
mov byte [esp + 0x2a], 0x2f
mov dword [esp + 0x108], eax
call fcn.004bf900
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x38]
call fcn.004b7cb0
lea ecx, [esp + 0x68]
call fcn.004010b0
mov dword [esp + 0x90], ebp
mov dword [esp + 0x70], edi
mov dword [esp + 0x88], esi
mov eax, dword [esp + 0x18]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x505d5b
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0xc]
lea ecx, [eax + edx*4 + 0x14]
mov edx, dword [eax + 8]
mov esi, eax
push ecx
lea eax, [eax + edx*4 + 0x14]
push eax
lea ecx, [esp + 0x20]
call fcn.00401f52
push esi
call fcn.004be350
add esp, 4
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505d75
mov eax, dword [esp + 0x20]
push eax
call fcn.004b7ca0
add esp, 4
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x78]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
inc ecx
cmp ecx, edx
mov dword [esp + 0x78], ecx
jl 0x505af0
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x138]
mov ebp, 0x6bb0d4
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x505dd1
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0xc]
lea ecx, [eax + edx*4 + 0x14]
mov edx, dword [eax + 8]
mov esi, eax
push ecx
lea eax, [eax + edx*4 + 0x14]
push eax
lea ecx, [esp + 0x40]
call fcn.00401f52
push esi
call fcn.004be350
add esp, 4
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x118]
call fcn.004c9dd0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
mov edx, 1
lock xadd dword [eax], edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x40]
call fcn.004b8f70
lea ecx, [esp + 0x98]
push ecx
lea edx, [esp + 0x118]
push edx
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x130]
push ecx
mov ecx, ebx
call fcn.004c0db0
mov ecx, eax
call fcn.004c9180
push eax
mov ecx, edi
call fcn.004b7cb0
mov edx, dword [esp + 0x98]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x505e54
mov ecx, dword [esp + 0x98]
push ecx
call fcn.004b7ca0
add esp, 4
lea ecx, [esp + 0x124]
call fcn.004c7d40
mov edx, dword [esp + 0x3c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x505e7a
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.004b7ca0
add esp, 4
lea ecx, [esp + 0x114]
call fcn.004c7d40
push 0xffffffffffffffff
push str.__._
call fcn.004b7f60
add esp, 8
push 0
push 1
lea edx, [esp + 0x4c]
push edx
lea ecx, [esp + 0x38]
mov dword [esp + 0x50], eax
call fcn.004ec310
mov eax, dword [esp + 0x44]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x505ec5
mov edx, dword [esp + 0x44]
push edx
call fcn.004b7ca0
add esp, 4
push 1
lea ecx, [esp + 0x30]
call fcn.004e1720
push 0
push 0
push edi
lea ecx, [esp + 0x38]
call fcn.004ec4f0
mov esi, eax
cmp esi, 0xffffffff
je 0x505fd5
lea esp, [esp]
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x30]
call fcn.004e1730
sub eax, 3
push eax
lea ecx, [esi + 2]
push ecx
lea edx, [esp + 0x80]
push edx
mov ecx, edi
call fcn.004b9440
mov ecx, eax
call fcn.004b9600
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
lea ecx, [esp + 0x68]
push ecx
call fcn.004b10e0
mov edx, dword [eax]
mov eax, dword [edx + 0xc]
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x70]
push eax
call fcn.004b96c0
add esp, 0x14
push eax
lea ecx, [esp + 0x30]
call fcn.004e1730
push eax
push esi
mov ecx, edi
call fcn.004bdb80
mov ecx, dword [esp + 0x60]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505f6e
mov eax, dword [esp + 0x60]
push eax
call fcn.004b7ca0
add esp, 4
mov ecx, dword [esp + 0x64]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505f88
mov eax, dword [esp + 0x64]
push eax
call fcn.004be350
add esp, 4
mov ecx, dword [esp + 0x5c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505fa2
mov eax, dword [esp + 0x5c]
push eax
call fcn.004be350
add esp, 4
mov ecx, dword [esp + 0x74]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505fbc
mov eax, dword [esp + 0x74]
push eax
call fcn.004b7ca0
add esp, 4
push 0
push 0
push edi
lea ecx, [esp + 0x38]
call fcn.004ec4f0
mov esi, eax
cmp esi, 0xffffffff
jne 0x505ef0
push 0xffffffffffffffff
push str.__EPOCROOT
call fcn.004b7f60
add esp, 8
push 0
push 1
lea ecx, [esp + 0x50]
push ecx
lea ecx, [esp + 0x5c]
mov dword [esp + 0x54], eax
call fcn.004ec310
mov edx, dword [esp + 0x48]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x506014
mov ecx, dword [esp + 0x48]
push ecx
call fcn.004b7ca0
add esp, 4
push 0
push 0
push edi
lea ecx, [esp + 0x5c]
call fcn.004ec4f0
mov esi, eax
cmp esi, 0xffffffff
je 0x506063
lea edx, [esp + 0x7c]
push edx
call fcn.0052d070
add esp, 4
push eax
lea ecx, [esp + 0x54]
call fcn.004e1730
push eax
push esi
mov ecx, edi
call fcn.004bdb80
mov eax, dword [esp + 0x7c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x506063
mov edx, dword [esp + 0x7c]
push edx
call fcn.004b7ca0
add esp, 4
mov ecx, ebx
call fcn.004c3930
lea ecx, [esp + 0x50]
call fcn.004ec040
lea ecx, [esp + 0x2c]
call fcn.004ec040
mov eax, dword [esp + 0x34]
pop esi
or ecx, 0xffffffff
pop ebx
lock xadd dword [eax], ecx
jne 0x506098
mov edx, dword [esp + 0x2c]
push edx
call fcn.004b7ca0
add esp, 4
mov eax, dword [esp + 0x14]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5060b2
mov edx, dword [esp + 0x14]
push edx
call fcn.004b7ca0
add esp, 4
mov eax, dword [esp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne case.0x505790.8
mov edx, dword [esp + 0xc]
push edx
call fcn.004b7ca0
add esp, 4
push edi
call fcn.00501c10
add esp, 4
test al, al
je 0x5062aa
mov dword [esp + 0x20], ebp
mov eax, 1
lock xadd dword [ebp], eax
cmp dword [esp + 0x134], 0
jne 0x5061bc
cmp dword [0x6c334c], 0
je 0x506188
lea ecx, [esp + 0x7c]
push ecx
call fcn.004d9900
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.004b7cb0
mov edx, dword [esp + 0x7c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x5061f8
mov ecx, dword [esp + 0x7c]
push ecx
jmp 0x5061f0
mov ecx, dword [esp + 0x18]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x50616d
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
lea ecx, [esp + 0x20]
mov esi, eax
call fcn.00401f52
push esi
call fcn.004be350
add esp, 4
mov eax, dword [esp + 0x20]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x505d75
mov edx, dword [esp + 0x20]
push edx
jmp 0x505d6d
lea edx, [esp + 0x84]
push edx
call fcn.005020d0
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.004b7cb0
mov eax, dword [esp + 0x84]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5061f8
mov edx, dword [esp + 0x84]
push edx
jmp 0x5061f0
lea eax, [esp + 0x8c]
push 0
push eax
call fcn.00505740
add esp, 8
push eax
lea ecx, [esp + 0x24]
call fcn.004b7cb0
mov ecx, dword [esp + 0x8c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5061f8
mov eax, dword [esp + 0x8c]
push eax
call fcn.004b7ca0
add esp, 4
lea ecx, [esp + 0x20]
mov dword [esp + 0xec], ecx
lea ecx, [esp + 0x50]
lea edx, [esp + 0x1d]
lea eax, [esp + 0xec]
push ecx
lea ecx, [esp + 0xf8]
mov byte [esp + 0x21], 0x2f
mov dword [esp + 0xf4], edx
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], edi
call fcn.004ef430
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x98]
push eax
call fcn.00502130
add esp, 8
push eax
mov ecx, edi
call fcn.004b7cb0
mov ecx, dword [esp + 0x94]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x506276
mov eax, dword [esp + 0x94]
push eax
call fcn.004b7ca0
add esp, 4
mov ecx, dword [esp + 0x50]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x506290
mov eax, dword [esp + 0x50]
push eax
call fcn.004b7ca0
add esp, 4
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5062aa
mov eax, dword [esp + 0x20]
push eax
call fcn.004b7ca0
add esp, 4
mov eax, edi
pop edi
pop ebp
add esp, 0x124
ret