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

Disassembly:
sub esp, 0x124
push ebp
push edi
mov edi, dword [esp + 0x130]
mov ebp, 0x6ae0d4
mov dword [esp + 0x28], 0
mov dword [edi], ebp
mov eax, ebp
mov ecx, 1
lock xadd dword [eax], ecx
call fcn.00505990
test eax, eax
je 0x505a7b
cmp dword [eax], 0
jne 0x505b15
cmp dword [esp + 0x134], 0xb
ja case.0x505a90.8
mov edx, dword [esp + 0x134]
jmp dword [edx*4 + 0x5065b8]
mov eax, 0x633b4c
jmp 0x505ae2
mov eax, 0x633d5c
jmp 0x505ae2
mov eax, 0x633f6c
jmp 0x505ae2
mov eax, 0x63417c
jmp 0x505ae2
mov eax, 0x63438c
jmp 0x505ae2
mov eax, 0x63459c
jmp 0x505ae2
mov eax, 0x6347ac
jmp 0x505ae2
mov eax, 0x6349bc
jmp 0x505ae2
mov eax, 0x634bcc
jmp 0x505ae2
mov eax, 0x634ddc
jmp 0x505ae2
mov eax, 0x634fec
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.004b9950
add esp, 0xc
push eax
mov ecx, edi
call fcn.004b7f40
mov ecx, dword [esp + 0x64]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne case.0x505a90.8
mov eax, dword [esp + 0x64]
push eax
jmp 0x5063c4
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.0x505b43
jmp dword [eax*4 + 0x5065e8]
mov dword [esp + 0xd4], str.Prefix
lea edx, [esp + 0xd4]
jmp 0x505d40
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0xa4], str.Documentation
call fcn.004bab40
lea ecx, [esp + 0xdc]
push ecx
mov dword [esp + 0xe0], 0x674350
lea ecx, [esp + 0x18]
jmp 0x505d45
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xac], str.Headers
call fcn.004bab40
lea eax, [esp + 0x98]
mov dword [esp + 0x98], str.include
push eax
lea ecx, [esp + 0x18]
jmp 0x505d45
lea ecx, [esp + 0xb0]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xb4], str.Libraries
call fcn.004bab40
mov dword [esp + 0xcc], 0x635298
lea edx, [esp + 0xcc]
lea ecx, [esp + 0x14]
jmp 0x505d44
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0xbc], str.Binaries
call fcn.004bab40
lea ecx, [esp + 0xd0]
push ecx
mov dword [esp + 0xd4], 0x67377c
lea ecx, [esp + 0x18]
jmp 0x505d45
lea edx, [esp + 0xc0]
push edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xc4], str.Plugins
call fcn.004bab40
lea eax, [esp + 0xd8]
mov dword [esp + 0xd8], str.plugins
push eax
lea ecx, [esp + 0x18]
jmp 0x505d45
lea ecx, [esp + 0xc8]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xcc], str.Imports
call fcn.004bab40
mov dword [esp + 0xe0], str.imports
lea edx, [esp + 0xe0]
lea ecx, [esp + 0x14]
jmp 0x505d44
lea eax, [esp + 0x9c]
mov dword [esp + 0x9c], 0x635264
push eax
lea ecx, [esp + 0x10]
jmp 0x505d45
lea ecx, [esp + 0xa4]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xa8], str.Translations
call fcn.004bab40
mov dword [esp + 0xac], str.translations
lea edx, [esp + 0xac]
lea ecx, [esp + 0x14]
jmp 0x505d44
lea eax, [esp + 0xb4]
mov dword [esp + 0xb4], str.Settings
push eax
lea ecx, [esp + 0x10]
jmp 0x505d45
lea ecx, [esp + 0xbc]
push ecx
mov dword [esp + 0xc0], str.Examples
lea ecx, [esp + 0x10]
jmp 0x505d45
mov dword [esp + 0xc4], str.Demos
lea edx, [esp + 0xc4]
lea ecx, [esp + 0xc]
push edx
call fcn.004bab40
cmp dword [esp + 0xc], ebp
je 0x506398
push ebx
push esi
call fcn.00505990
xor esi, esi
cmp eax, esi
je 0x505d65
mov ebx, dword [eax]
jmp 0x505d67
xor ebx, ebx
push 0xffffffffffffffff
push str.Paths
mov dword [esp + 0x48], ebx
call fcn.004b81f0
mov dword [esp + 0x5c], eax
add esp, 8
lea eax, [esp + 0x54]
push eax
mov ecx, ebx
call fcn.004c2c80
mov ecx, dword [esp + 0x54]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x505da4
mov eax, dword [esp + 0x54]
push eax
call fcn.004b7f30
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.004c2080
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 0x5060a0
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.004be480
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
test eax, eax
jle 0x506026
cmp eax, 4
jge 0x506026
mov edx, dword [ecx]
or edi, 0xffffffff
or esi, edi
cmp edx, 1
je 0x505e61
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 4]
push ecx
lea ecx, [esp + 0x1c]
call fcn.00401e73
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.004b8400
cmp byte [esp + 0x13], 0
mov ebp, eax
je 0x506438
test ebp, ebp
jl 0x506438
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
cmp edx, 2
jl 0x505edc
push 0xa
lea eax, [esp + 0x17]
push eax
push 1
lea ecx, [esp + 0x24]
call fcn.00401d46
mov ecx, eax
call fcn.004b8400
cmp byte [esp + 0x13], 0
mov edi, eax
jne 0x505ed5
lea ecx, [esp + 0x18]
call fcn.00401113
lea ecx, [esp + 0x20]
call fcn.004010b0
jmp 0x506075
test edi, edi
jge 0x505edc
or edi, 0xffffffff
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ecx, 3
jl 0x505f14
push 0xa
lea edx, [esp + 0x17]
push edx
push 2
lea ecx, [esp + 0x24]
call fcn.00401d46
mov ecx, eax
call fcn.004b8400
cmp byte [esp + 0x13], 0
mov esi, eax
je 0x505ebe
test esi, esi
jge 0x505f14
or esi, 0xffffffff
cmp ebp, dword [esp + 0x90]
jl 0x505fb3
cmp ebp, 4
jg 0x505fb3
cmp edi, 0xffffffff
je 0x505f3a
cmp edi, dword [esp + 0x70]
jl 0x505fb3
cmp edi, 8
jg 0x505fb3
cmp esi, 0xffffffff
je 0x505f4d
cmp esi, dword [esp + 0x88]
jl 0x505fb3
cmp esi, 6
jg 0x505fb3
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.004ef780
mov ecx, dword [esp + 0x40]
or dword [esp + 0x30], 1
lea edx, [esp + 0x80]
push edx
call fcn.004c0fc0
test al, al
je 0x505fb3
mov bl, 1
jmp 0x505fb5
xor bl, bl
test byte [esp + 0x30], 1
je 0x505fcd
and dword [esp + 0x30], 0xfffffffe
lea ecx, [esp + 0x80]
call fcn.004010b0
test bl, bl
je 0x506026
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.004bfb80
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x38]
call fcn.004b7f40
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 0x50605b
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.00401f5b
push esi
call fcn.004be5e0
add esp, 4
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x506075
mov eax, dword [esp + 0x20]
push eax
call fcn.004b7f30
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 0x505df0
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x138]
mov ebp, 0x6ae0d4
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5060d1
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.00401f5b
push esi
call fcn.004be5e0
add esp, 4
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x118]
call fcn.004ca020
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.004b9200
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.004c1050
mov ecx, eax
call fcn.004c9400
push eax
mov ecx, edi
call fcn.004b7f40
mov edx, dword [esp + 0x98]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x506154
mov ecx, dword [esp + 0x98]
push ecx
call fcn.004b7f30
add esp, 4
lea ecx, [esp + 0x124]
call fcn.004c7fc0
mov edx, dword [esp + 0x3c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x50617a
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.004b7f30
add esp, 4
lea ecx, [esp + 0x114]
call fcn.004c7fc0
push 0xffffffffffffffff
push 0x63521c
call fcn.004b81f0
add esp, 8
push 0
push 1
lea edx, [esp + 0x4c]
push edx
lea ecx, [esp + 0x38]
mov dword [esp + 0x50], eax
call fcn.004ec660
mov eax, dword [esp + 0x44]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5061c5
mov edx, dword [esp + 0x44]
push edx
call fcn.004b7f30
add esp, 4
push 1
lea ecx, [esp + 0x30]
call fcn.004e1a20
push 0
push 0
push edi
lea ecx, [esp + 0x38]
call fcn.004ec840
mov esi, eax
cmp esi, 0xffffffff
je 0x5062d5
lea esp, [esp]
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x30]
call fcn.004e1a30
sub eax, 3
push eax
lea ecx, [esi + 2]
push ecx
lea edx, [esp + 0x80]
push edx
mov ecx, edi
call fcn.004b96d0
mov ecx, eax
call fcn.004b9890
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
lea ecx, [esp + 0x68]
push ecx
call fcn.004b1400
mov edx, dword [eax]
mov eax, dword [edx + 0xc]
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x70]
push eax
call fcn.004b9950
add esp, 0x14
push eax
lea ecx, [esp + 0x30]
call fcn.004e1a30
push eax
push esi
mov ecx, edi
call fcn.004bde10
mov ecx, dword [esp + 0x60]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x50626e
mov eax, dword [esp + 0x60]
push eax
call fcn.004b7f30
add esp, 4
mov ecx, dword [esp + 0x64]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x506288
mov eax, dword [esp + 0x64]
push eax
call fcn.004be5e0
add esp, 4
mov ecx, dword [esp + 0x5c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5062a2
mov eax, dword [esp + 0x5c]
push eax
call fcn.004be5e0
add esp, 4
mov ecx, dword [esp + 0x74]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5062bc
mov eax, dword [esp + 0x74]
push eax
call fcn.004b7f30
add esp, 4
push 0
push 0
push edi
lea ecx, [esp + 0x38]
call fcn.004ec840
mov esi, eax
cmp esi, 0xffffffff
jne 0x5061f0
push 0xffffffffffffffff
push str.__EPOCROOT
call fcn.004b81f0
add esp, 8
push 0
push 1
lea ecx, [esp + 0x50]
push ecx
lea ecx, [esp + 0x5c]
mov dword [esp + 0x54], eax
call fcn.004ec660
mov edx, dword [esp + 0x48]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x506314
mov ecx, dword [esp + 0x48]
push ecx
call fcn.004b7f30
add esp, 4
push 0
push 0
push edi
lea ecx, [esp + 0x5c]
call fcn.004ec840
mov esi, eax
cmp esi, 0xffffffff
je 0x506363
lea edx, [esp + 0x7c]
push edx
call fcn.0052d320
add esp, 4
push eax
lea ecx, [esp + 0x54]
call fcn.004e1a30
push eax
push esi
mov ecx, edi
call fcn.004bde10
mov eax, dword [esp + 0x7c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x506363
mov edx, dword [esp + 0x7c]
push edx
call fcn.004b7f30
add esp, 4
mov ecx, ebx
call fcn.004c3bd0
lea ecx, [esp + 0x50]
call fcn.004ec390
lea ecx, [esp + 0x2c]
call fcn.004ec390
mov eax, dword [esp + 0x34]
pop esi
or ecx, 0xffffffff
pop ebx
lock xadd dword [eax], ecx
jne 0x506398
mov edx, dword [esp + 0x2c]
push edx
call fcn.004b7f30
add esp, 4
mov eax, dword [esp + 0x14]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5063b2
mov edx, dword [esp + 0x14]
push edx
call fcn.004b7f30
add esp, 4
mov eax, dword [esp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne case.0x505a90.8
mov edx, dword [esp + 0xc]
push edx
call fcn.004b7f30
add esp, 4
push edi
call fcn.00501f00
add esp, 4
test al, al
je 0x5065aa
mov dword [esp + 0x20], ebp
mov eax, 1
lock xadd dword [ebp], eax
cmp dword [esp + 0x134], 0
jne 0x5064bc
cmp dword [0x6b596c], 0
je 0x506488
lea ecx, [esp + 0x7c]
push ecx
call fcn.004d9bd0
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.004b7f40
mov edx, dword [esp + 0x7c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x5064f8
mov ecx, dword [esp + 0x7c]
push ecx
jmp 0x5064f0
mov ecx, dword [esp + 0x18]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x50646d
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.00401f5b
push esi
call fcn.004be5e0
add esp, 4
mov eax, dword [esp + 0x20]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x506075
mov edx, dword [esp + 0x20]
push edx
jmp 0x50606d
lea edx, [esp + 0x84]
push edx
call fcn.005023c0
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.004b7f40
mov eax, dword [esp + 0x84]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5064f8
mov edx, dword [esp + 0x84]
push edx
jmp 0x5064f0
lea eax, [esp + 0x8c]
push 0
push eax
call fcn.00505a40
add esp, 8
push eax
lea ecx, [esp + 0x24]
call fcn.004b7f40
mov ecx, dword [esp + 0x8c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5064f8
mov eax, dword [esp + 0x8c]
push eax
call fcn.004b7f30
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.004ef780
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x98]
push eax
call fcn.00502420
add esp, 8
push eax
mov ecx, edi
call fcn.004b7f40
mov ecx, dword [esp + 0x94]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x506576
mov eax, dword [esp + 0x94]
push eax
call fcn.004b7f30
add esp, 4
mov ecx, dword [esp + 0x50]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x506590
mov eax, dword [esp + 0x50]
push eax
call fcn.004b7f30
add esp, 4
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5065aa
mov eax, dword [esp + 0x20]
push eax
call fcn.004b7f30
add esp, 4
mov eax, edi
pop edi
pop ebp
add esp, 0x124
ret