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

Disassembly:
sub esp, 0x124
push ebp
push edi
mov edi, dword [esp + 0x130]
mov ebp, 0x6d00d4
mov dword [esp + 0x28], 0
mov dword [edi], ebp
mov eax, ebp
mov ecx, 1
lock xadd dword [eax], ecx
call fcn.00525e70
test eax, eax
je 0x525f5b
cmp dword [eax], 0
jne 0x525ff5
cmp dword [esp + 0x134], 0xb
ja case.0x525f70.8
mov edx, dword [esp + 0x134]
jmp dword [edx*4 + 0x526a98]
mov eax, 0x655b4c
jmp 0x525fc2
mov eax, 0x655d5c
jmp 0x525fc2
mov eax, 0x655f6c
jmp 0x525fc2
mov eax, 0x65617c
jmp 0x525fc2
mov eax, 0x65638c
jmp 0x525fc2
mov eax, 0x65659c
jmp 0x525fc2
mov eax, 0x6567ac
jmp 0x525fc2
mov eax, 0x6569bc
jmp 0x525fc2
mov eax, 0x656bcc
jmp 0x525fc2
mov eax, 0x656ddc
jmp 0x525fc2
mov eax, 0x656fec
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.004d9be0
add esp, 0xc
push eax
mov ecx, edi
call fcn.004d5a10
mov ecx, dword [esp + 0x64]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne case.0x525f70.8
mov eax, dword [esp + 0x64]
push eax
jmp 0x5268a4
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.0x526023
jmp dword [eax*4 + 0x526ac8]
mov dword [esp + 0xd4], str.Prefix
lea edx, [esp + 0xd4]
jmp 0x526220
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0xa4], str.Documentation
call fcn.004dadd0
lea ecx, [esp + 0xdc]
push ecx
mov dword [esp + 0xe0], 0x696358
lea ecx, [esp + 0x18]
jmp 0x526225
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xac], str.Headers
call fcn.004dadd0
lea eax, [esp + 0x98]
mov dword [esp + 0x98], str.include
push eax
lea ecx, [esp + 0x18]
jmp 0x526225
lea ecx, [esp + 0xb0]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xb4], str.Libraries
call fcn.004dadd0
mov dword [esp + 0xcc], 0x657298
lea edx, [esp + 0xcc]
lea ecx, [esp + 0x14]
jmp 0x526224
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0xbc], str.Binaries
call fcn.004dadd0
lea ecx, [esp + 0xd0]
push ecx
mov dword [esp + 0xd4], 0x695784
lea ecx, [esp + 0x18]
jmp 0x526225
lea edx, [esp + 0xc0]
push edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xc4], str.Plugins
call fcn.004dadd0
lea eax, [esp + 0xd8]
mov dword [esp + 0xd8], str.plugins
push eax
lea ecx, [esp + 0x18]
jmp 0x526225
lea ecx, [esp + 0xc8]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xcc], str.Imports
call fcn.004dadd0
mov dword [esp + 0xe0], str.imports
lea edx, [esp + 0xe0]
lea ecx, [esp + 0x14]
jmp 0x526224
lea eax, [esp + 0x9c]
mov dword [esp + 0x9c], 0x657264
push eax
lea ecx, [esp + 0x10]
jmp 0x526225
lea ecx, [esp + 0xa4]
push ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0xa8], str.Translations
call fcn.004dadd0
mov dword [esp + 0xac], str.translations
lea edx, [esp + 0xac]
lea ecx, [esp + 0x14]
jmp 0x526224
lea eax, [esp + 0xb4]
mov dword [esp + 0xb4], str.Settings
push eax
lea ecx, [esp + 0x10]
jmp 0x526225
lea ecx, [esp + 0xbc]
push ecx
mov dword [esp + 0xc0], str.Examples
lea ecx, [esp + 0x10]
jmp 0x526225
mov dword [esp + 0xc4], str.Demos
lea edx, [esp + 0xc4]
lea ecx, [esp + 0xc]
push edx
call fcn.004dadd0
cmp dword [esp + 0xc], ebp
je 0x526878
push ebx
push esi
call fcn.00525e70
xor esi, esi
cmp eax, esi
je 0x526245
mov ebx, dword [eax]
jmp 0x526247
xor ebx, ebx
push 0xffffffffffffffff
push str.Paths
mov dword [esp + 0x48], ebx
call fcn.004d8480
mov dword [esp + 0x5c], eax
add esp, 8
lea eax, [esp + 0x54]
push eax
mov ecx, ebx
call fcn.004e2e90
mov ecx, dword [esp + 0x54]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526284
mov eax, dword [esp + 0x54]
push eax
call fcn.004d8200
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.004e2290
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 0x526580
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.004de710
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
test eax, eax
jle 0x526506
cmp eax, 4
jge 0x526506
mov edx, dword [ecx]
or edi, 0xffffffff
or esi, edi
cmp edx, 1
je 0x526341
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 4]
push ecx
lea ecx, [esp + 0x1c]
call fcn.004023d0
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.004d8690
cmp byte [esp + 0x13], 0
mov ebp, eax
je 0x526918
test ebp, ebp
jl 0x526918
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
cmp edx, 2
jl 0x5263bc
push 0xa
lea eax, [esp + 0x17]
push eax
push 1
lea ecx, [esp + 0x24]
call fcn.00402270
mov ecx, eax
call fcn.004d8690
cmp byte [esp + 0x13], 0
mov edi, eax
jne 0x5263b5
lea ecx, [esp + 0x18]
call fcn.00401200
lea ecx, [esp + 0x20]
call fcn.00401110
jmp 0x526555
test edi, edi
jge 0x5263bc
or edi, 0xffffffff
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ecx, 3
jl 0x5263f4
push 0xa
lea edx, [esp + 0x17]
push edx
push 2
lea ecx, [esp + 0x24]
call fcn.00402270
mov ecx, eax
call fcn.004d8690
cmp byte [esp + 0x13], 0
mov esi, eax
je 0x52639e
test esi, esi
jge 0x5263f4
or esi, 0xffffffff
cmp ebp, dword [esp + 0x90]
jl 0x526493
cmp ebp, 4
jg 0x526493
cmp edi, 0xffffffff
je 0x52641a
cmp edi, dword [esp + 0x70]
jl 0x526493
cmp edi, 8
jg 0x526493
cmp esi, 0xffffffff
je 0x52642d
cmp esi, dword [esp + 0x88]
jl 0x526493
cmp esi, 6
jg 0x526493
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.0050fc20
mov ecx, dword [esp + 0x40]
or dword [esp + 0x30], 1
lea edx, [esp + 0x80]
push edx
call fcn.004e11d0
test al, al
je 0x526493
mov bl, 1
jmp 0x526495
xor bl, bl
test byte [esp + 0x30], 1
je 0x5264ad
and dword [esp + 0x30], 0xfffffffe
lea ecx, [esp + 0x80]
call fcn.00401110
test bl, bl
je 0x526506
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.004dfe00
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x38]
call fcn.004d5a10
lea ecx, [esp + 0x68]
call fcn.00401110
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 0x52653b
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.00402550
push esi
call fcn.004de870
add esp, 4
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526555
mov eax, dword [esp + 0x20]
push eax
call fcn.004d8200
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 0x5262d0
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x138]
mov ebp, 0x6d00d4
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5265b1
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.00402550
push esi
call fcn.004de870
add esp, 4
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x118]
call fcn.004ea340
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.004d9490
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.004e1260
mov ecx, eax
call fcn.004e96b0
push eax
mov ecx, edi
call fcn.004d5a10
mov edx, dword [esp + 0x98]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x526634
mov ecx, dword [esp + 0x98]
push ecx
call fcn.004d8200
add esp, 4
lea ecx, [esp + 0x124]
call fcn.004e81f0
mov edx, dword [esp + 0x3c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x52665a
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.004d8200
add esp, 4
lea ecx, [esp + 0x114]
call fcn.004e81f0
push 0xffffffffffffffff
push str.__._
call fcn.004d8480
add esp, 8
push 0
push 1
lea edx, [esp + 0x4c]
push edx
lea ecx, [esp + 0x38]
mov dword [esp + 0x50], eax
call fcn.0050cb00
mov eax, dword [esp + 0x44]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5266a5
mov edx, dword [esp + 0x44]
push edx
call fcn.004d8200
add esp, 4
push 1
lea ecx, [esp + 0x30]
call fcn.00501db0
push 0
push 0
push edi
lea ecx, [esp + 0x38]
call fcn.0050cce0
mov esi, eax
cmp esi, 0xffffffff
je 0x5267b5
lea esp, [esp]
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x30]
call fcn.00501dc0
sub eax, 3
push eax
lea ecx, [esi + 2]
push ecx
lea edx, [esp + 0x80]
push edx
mov ecx, edi
call fcn.004d9960
mov ecx, eax
call fcn.004d9b20
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
lea ecx, [esp + 0x68]
push ecx
call fcn.004d1630
mov edx, dword [eax]
mov eax, dword [edx + 0xc]
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x70]
push eax
call fcn.004d9be0
add esp, 0x14
push eax
lea ecx, [esp + 0x30]
call fcn.00501dc0
push eax
push esi
mov ecx, edi
call fcn.004de0a0
mov ecx, dword [esp + 0x60]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x52674e
mov eax, dword [esp + 0x60]
push eax
call fcn.004d8200
add esp, 4
mov ecx, dword [esp + 0x64]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526768
mov eax, dword [esp + 0x64]
push eax
call fcn.004de870
add esp, 4
mov ecx, dword [esp + 0x5c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526782
mov eax, dword [esp + 0x5c]
push eax
call fcn.004de870
add esp, 4
mov ecx, dword [esp + 0x74]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x52679c
mov eax, dword [esp + 0x74]
push eax
call fcn.004d8200
add esp, 4
push 0
push 0
push edi
lea ecx, [esp + 0x38]
call fcn.0050cce0
mov esi, eax
cmp esi, 0xffffffff
jne 0x5266d0
push 0xffffffffffffffff
push str.__EPOCROOT
call fcn.004d8480
add esp, 8
push 0
push 1
lea ecx, [esp + 0x50]
push ecx
lea ecx, [esp + 0x5c]
mov dword [esp + 0x54], eax
call fcn.0050cb00
mov edx, dword [esp + 0x48]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x5267f4
mov ecx, dword [esp + 0x48]
push ecx
call fcn.004d8200
add esp, 4
push 0
push 0
push edi
lea ecx, [esp + 0x5c]
call fcn.0050cce0
mov esi, eax
cmp esi, 0xffffffff
je 0x526843
lea edx, [esp + 0x7c]
push edx
call fcn.0054d5b0
add esp, 4
push eax
lea ecx, [esp + 0x54]
call fcn.00501dc0
push eax
push esi
mov ecx, edi
call fcn.004de0a0
mov eax, dword [esp + 0x7c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x526843
mov edx, dword [esp + 0x7c]
push edx
call fcn.004d8200
add esp, 4
mov ecx, ebx
call fcn.004e3de0
lea ecx, [esp + 0x50]
call fcn.0050c830
lea ecx, [esp + 0x2c]
call fcn.0050c830
mov eax, dword [esp + 0x34]
pop esi
or ecx, 0xffffffff
pop ebx
lock xadd dword [eax], ecx
jne 0x526878
mov edx, dword [esp + 0x2c]
push edx
call fcn.004d8200
add esp, 4
mov eax, dword [esp + 0x14]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x526892
mov edx, dword [esp + 0x14]
push edx
call fcn.004d8200
add esp, 4
mov eax, dword [esp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne case.0x525f70.8
mov edx, dword [esp + 0xc]
push edx
call fcn.004d8200
add esp, 4
push edi
call fcn.005223f0
add esp, 4
test al, al
je 0x526a8a
mov dword [esp + 0x20], ebp
mov eax, 1
lock xadd dword [ebp], eax
cmp dword [esp + 0x134], 0
jne 0x52699c
cmp dword [0x6d796c], 0
je 0x526968
lea ecx, [esp + 0x7c]
push ecx
call fcn.004f9ee0
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.004d5a10
mov edx, dword [esp + 0x7c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x5269d8
mov ecx, dword [esp + 0x7c]
push ecx
jmp 0x5269d0
mov ecx, dword [esp + 0x18]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x52694d
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.00402550
push esi
call fcn.004de870
add esp, 4
mov eax, dword [esp + 0x20]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x526555
mov edx, dword [esp + 0x20]
push edx
jmp 0x52654d
lea edx, [esp + 0x84]
push edx
call fcn.005228b0
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.004d5a10
mov eax, dword [esp + 0x84]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x5269d8
mov edx, dword [esp + 0x84]
push edx
jmp 0x5269d0
lea eax, [esp + 0x8c]
push 0
push eax
call fcn.00525f20
add esp, 8
push eax
lea ecx, [esp + 0x24]
call fcn.004d5a10
mov ecx, dword [esp + 0x8c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x5269d8
mov eax, dword [esp + 0x8c]
push eax
call fcn.004d8200
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.0050fc20
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x98]
push eax
call fcn.00522910
add esp, 8
push eax
mov ecx, edi
call fcn.004d5a10
mov ecx, dword [esp + 0x94]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526a56
mov eax, dword [esp + 0x94]
push eax
call fcn.004d8200
add esp, 4
mov ecx, dword [esp + 0x50]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526a70
mov eax, dword [esp + 0x50]
push eax
call fcn.004d8200
add esp, 4
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x526a8a
mov eax, dword [esp + 0x20]
push eax
call fcn.004d8200
add esp, 4
mov eax, edi
pop edi
pop ebp
add esp, 0x124
ret