Function at 0x40ad20
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44f355
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
push ebx
push esi
push edi
mov eax, dword [0x46505c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov esi, dword [ebp + 8]
cmp dword [esi + 0x10], 0
jne 0x40add1
push 0x15
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.The_dll_path_is_empty
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40ad9a
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b7ad
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b0b6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7c3
jmp 0x40b0b6
sub esp, 0x18
mov ecx, esp
push esi
call fcn.00401640
lea ecx, [ebp - 0x24]
call fcn.00407390
mov ecx, eax
mov dword [ebp - 4], 1
call fcn.00407ad0
test al, al
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
sete bl
cmp edx, 0x10
jb 0x40ae32
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40ae28
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7c8
push edx
push ecx
call fcn.0042820f
add esp, 8
test bl, bl
je 0x40af2f
cmp dword [esi + 0x14], 0x10
jb 0x40ae42
mov esi, dword [esi]
push esi
lea eax, [ebp - 0x58]
push str.dll_not_found:__s
push eax
call fcn.0040ac70
add esp, 0xc
mov edx, eax
mov dword [ebp - 4], 2
cmp dword [edx + 0x14], 0x10
jb 0x40ae65
mov edx, dword [edx]
mov ecx, edx
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ae83
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x24]
call fcn.00405170
mov byte [ebp - 4], 3
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40aeb2
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40aee6
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40aedc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7cd
push edx
push ecx
call fcn.0042820f
add esp, 8
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
cmp edx, 0x10
jb 0x40b7ad
mov ecx, dword [ebp - 0x58]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b0b6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7cd
jmp 0x40b0b6
cmp dword [esi + 0x14], 0x10
mov eax, esi
jb 0x40af39
mov eax, dword [esi]
push eax
lea eax, [ebp - 0x58]
push str.load_dll:__s
push eax
call fcn.0040ac70
add esp, 0xc
mov edx, eax
mov dword [ebp - 4], 4
cmp dword [edx + 0x14], 0x10
jb 0x40af5c
mov edx, dword [edx]
mov ecx, edx
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
lea ebx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40af80
sub ecx, ebx
push ecx
push edx
lea ecx, [ebp - 0x24]
call fcn.00405170
mov byte [ebp - 4], 5
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40afaf
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40afe7
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40afdd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7d2
push edx
push ecx
call fcn.0042820f
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
cmp edx, 0x10
jb 0x40b034
mov ecx, dword [ebp - 0x58]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b02a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7d2
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [esi + 0x14], 0x10
jb 0x40b03c
mov esi, dword [esi]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [edi + 8], eax
test eax, eax
jne 0x40b0c5
push 0x23
mov dword [ebp - 0x24], eax
lea ecx, [ebp - 0x24]
push str.Failed_to_load_dll____Load_API_fail
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], al
call fcn.00405170
mov dword [ebp - 4], 6
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b088
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b7ad
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b0b6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7d7
push edx
push ecx
call fcn.0042820f
add esp, 8
jmp 0x40b7ad
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.log_handler_init
push eax
call esi
push str.log_handler_handle_data
push dword [edi + 8]
mov dword [edi + 0xc], eax
call esi
push str.log_handler_save
push dword [edi + 8]
mov dword [edi + 0x10], eax
call esi
push str.log_handler_clear
push dword [edi + 8]
mov dword [edi + 0x14], eax
call esi
push str.log_handler_need_save
push dword [edi + 8]
mov dword [edi + 0x18], eax
call esi
push str.log_handler_deinit
push dword [edi + 8]
mov dword [edi + 0x1c], eax
call esi
push str.log_handler_handle_start
push dword [edi + 8]
mov dword [edi + 0x20], eax
call esi
push str.log_handler_handle_stop
push dword [edi + 8]
mov dword [edi + 0x24], eax
call esi
push str.log_handler_manual_flush
push dword [edi + 8]
mov dword [edi + 0x28], eax
call esi
cmp dword [edi + 0xc], 0
mov dword [edi + 0x2c], eax
je 0x40b3af
cmp dword [edi + 0x10], 0
je 0x40b3af
cmp dword [edi + 0x14], 0
je 0x40b3af
cmp dword [edi + 0x18], 0
je 0x40b3af
cmp dword [edi + 0x1c], 0
je 0x40b3af
cmp dword [edi + 0x20], 0
je 0x40b3af
cmp dword [edi + 0x24], 0
jne 0x40b206
push 0x33
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll_API:_log_handler_handle_start
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0xe
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b1cb
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b206
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b1fc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7dc
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x28], 0
jne 0x40b292
push 0x32
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll_API:_log_handler_handle_stop
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0xf
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b257
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b292
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b288
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7e1
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x2c], 0
jne 0x40b31e
push 0x33
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll_API:_log_handler_manual_flush
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0x10
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b2e3
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b31e
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b314
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7e6
push edx
push ecx
call fcn.0042820f
add esp, 8
push 0x44
mov dword [ebp - 0x3c], 0
lea ecx, [ebp - 0x3c]
push str.Succeed_to_load_dll_and_succeed_to_resolve_the_API_function_pointers
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0xf
mov byte [ebp - 0x3c], 0
call fcn.00405170
mov dword [ebp - 4], 0x11
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b365
cmp dword [ebp - 0x28], 0x10
lea eax, [ebp - 0x3c]
cmovae eax, dword [ebp - 0x3c]
push eax
call ecx
add esp, 4
mov edx, dword [ebp - 0x28]
cmp edx, 0x10
jb 0x40b399
mov ecx, dword [ebp - 0x3c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b38f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7eb
push edx
push ecx
call fcn.0042820f
add esp, 8
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x21
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll_public_APIs
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 7
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b3f6
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b431
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b427
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7f0
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0xc], 0
jne 0x40b4bd
push 0x20
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll__init__API
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 8
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b482
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b4bd
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b4b3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7f5
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x10], 0
jne 0x40b549
push 0x27
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll__handle_data__API
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 9
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b50e
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b549
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b53f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7fa
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x14], 0
jne 0x40b5d5
push 0x20
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll__save__API
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0xa
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b59a
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b5d5
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b5cb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b7ff
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x18], 0
jne 0x40b661
push 0x21
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll__clear__API
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0xb
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b626
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b661
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b657
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b804
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x1c], 0
jne 0x40b6ed
push 0x25
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll__need_save__API
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0xc
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b6b2
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b6ed
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b6e3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b809
push edx
push ecx
call fcn.0042820f
add esp, 8
cmp dword [edi + 0x20], 0
jne 0x40b76e
push 0x22
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x24]
push str.Failed_to_resolve_dll__deinit__API
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0xf
mov byte [ebp - 0x24], 0
call fcn.00405170
mov dword [ebp - 4], 0xd
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x40b73a
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
cmovae eax, dword [ebp - 0x24]
push eax
call ecx
add esp, 4
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x40b76e
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40b764
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b80e
push edx
push ecx
call fcn.0042820f
add esp, 8
mov eax, dword [edi + 8]
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0x18], 0
mov dword [edi + 0x1c], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x20], 0
test eax, eax
je 0x40b7ad
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [edi + 8], 0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
call fcn.0042c7ff
int3