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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov eax, dword [esp + 0x74]
cmp dword [eax + 0x14], 8
jb 0x40cd1c
mov eax, dword [eax]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x44]
mov dword [ecx], eax
sub esp, 0xc
mov al, byte [esp + 0x18]
mov byte [esp + 8], al
mov dword [esp + 4], ecx
lea ebx, [esp + 0x2c]
mov dword [esp], ebx
call fcn.00451cf8
add esp, 0xc
lea esi, [esp + 0x18]
mov ecx, esi
push ebx
call fcn.0040d378
mov ecx, ebx
call fcn.0040d3aa
mov eax, dword [esi + 4]
test eax, eax
je 0x40cd6c
lock inc dword [eax + 4]
mov eax, dword [esp + 0x1c]
jmp 0x40cd6e
xor eax, eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov edi, esp
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x40cdb5
lock inc dword [eax + 4]
mov esi, dword [esp + 0x1c]
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
test esi, esi
je 0x40cdbf
lock dec dword [esi + 4]
jne 0x40cdbf
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40cdbf
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
jmp 0x40cdbf
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov esp, edi
lea edi, [esp + 4]
lea ebp, [esp + 0xc]
push edi
push ebp
call fcn.0044e55e
add esp, 8
test al, al
je 0x40ce6b
mov esi, dword [esp + 0xc]
mov ecx, esi
push ebx
call fcn.0044e56e
cmp dword [esp + 0x20], 2
jne 0x40ce5f
sub esp, 0xc
mov al, byte [esp + 0x50]
mov byte [esp + 8], al
lea eax, [esp + 0x84]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00452893
add esp, 0xc
add esi, 0x20
mov ecx, esi
lea eax, [esp + 0x44]
push eax
call fcn.0040d400
cmp dword [esp + 0x34], 8
mov ebp, ebx
mov eax, ebx
jb 0x40ce2d
mov eax, dword [esp + 0x20]
lea ebx, [esp + 0x44]
mov ecx, ebx
push dword [esp + 0x30]
push eax
call fcn.0044e6b0
mov edi, eax
mov ecx, ebx
call fcn.0040d3aa
mov ebx, ebp
mov ecx, ebp
call fcn.0040d3aa
test edi, edi
lea edi, [esp + 4]
lea ebp, [esp + 0xc]
je 0x40d220
mov ecx, ebp
call fcn.0040d518
jmp 0x40cdc9
mov esi, dword [esp + 8]
test esi, esi
je 0x40ce8c
lock dec dword [esi + 4]
jne 0x40ce8c
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40ce8c
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov esi, dword [esp + 0x10]
test esi, esi
je 0x40cead
lock dec dword [esi + 4]
jne 0x40cead
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40cead
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x40cece
lock dec dword [esi + 4]
jne 0x40cece
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40cece
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov dword [esp + 0x20], 0x4db1b343
mov byte [esp + 0x24], 0x64
xor eax, eax
mov dword [esp + 0x29], eax
mov dword [esp + 0x25], eax
mov dword [esp + 0x2c], eax
call fcn.0046d640
mov esi, dword [eax]
call fcn.0046d646
mov ecx, dword [eax]
xor eax, eax
cmp esi, eax
ja 0x40d20f
mov bl, byte [esp + eax + 0x20]
movzx edx, bl
lea edi, [ecx + 1]
cmp esi, edi
jae 0x40cf5d
cmp ecx, eax
ja 0x40d2f7
lea ebp, [ecx + 4]
cmp esi, ebp
jae 0x40cf8a
mov dword [esp], edx
lea edx, [esi + ecx]
cmp edx, eax
jbe 0x40cfa0
cmp esi, edi
mov edi, esi
je 0x40cfc5
lea edx, [ecx + 3]
cmp esi, edx
jne 0x40d09f
lea edx, [eax + 0x1fd93a80]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x1fd93a80
and edx, edi
add edx, edx
sub ebx, edx
xor bl, 0x80
jmp 0x40d089
jne 0x40cf69
movzx edx, bl
add edx, ecx
jmp 0x40d08e
lea ebp, [ecx + 4]
cmp esi, ebp
jne 0x40cfcd
lea edi, [eax - 0xa694ed0]
lea ebx, [eax + edx]
add ebx, 0xf596b130
and edi, edx
add edi, edi
sub ebx, edi
jmp 0x40d014
cmp esi, edi
je 0x40cfa7
mov dword [esp], edx
lea edx, [ecx + 3]
cmp esi, edx
jne 0x40d061
mov edi, ecx
jmp 0x40cfc5
cmp esi, edi
mov edx, dword [esp]
jne 0x40cff1
mov ebx, edx
lea edx, [eax + 0x1711ebd0]
lea ecx, [eax + ebx]
add ecx, 0x1711ebd0
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0x50
mov byte [esp + eax + 0x20], cl
dec eax
mov ecx, edi
jmp 0x40d090
lea ebp, [ecx + 5]
cmp esi, ebp
jne 0x40d019
lea edi, [eax - 0x459d2770]
lea ebx, [eax + edx]
add ebx, 0xba62d890
and edi, edx
add edi, edi
sub ebx, edi
add bl, 0x10
jmp 0x40d087
lea edx, [ecx + 5]
cmp esi, edx
jne 0x40d0ab
lea edx, [eax - 0x70e462d0]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x8f1b9d30
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0xb0
jmp 0x40d089
lea ebp, [ecx + 3]
cmp esi, ebp
jne 0x40d10e
lea edi, [eax + 0x7f2efff0]
lea ebx, [eax + edx]
add ebx, 0x7f2efff0
and edi, edx
mov ebp, edx
mov dl, 0x70
add edi, edi
sub ebx, edi
add bl, dl
lea edx, [eax - 0x2421ecd0]
lea edi, [eax + ebp]
add edi, 0xdbde1330
and edx, ebp
add edx, edx
sub edi, edx
mov edx, edi
add dl, bl
add dl, 0xb0
mov byte [esp + eax + 0x20], dl
jmp 0x40d087
lea edx, [ecx + 2]
cmp esi, edx
jne 0x40d129
lea edx, [eax + 0x6a5c6250]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x6a5c6250
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0xd0
add esi, ecx
movzx edx, bl
not edx
add eax, edx
inc eax
cmp eax, 0x10
jb 0x40cef9
jmp 0x40d219
lea edx, [ecx + 2]
cmp esi, edx
je 0x40d0e0
jmp 0x40cee9
lea edx, [ecx + 3]
cmp esi, edx
jne 0x40d150
lea edx, [eax - 0x5f55c570]
mov ebp, dword [esp]
lea ebx, [eax + ebp]
add ebx, 0xa0aa3a90
and edx, ebp
add edx, edx
sub ebx, edx
add bl, 0x10
mov byte [esp + eax + 0x20], bl
movzx edx, bl
not ecx
add eax, ecx
sub eax, edx
mov ecx, edi
lea edx, [eax - 0x7cefb1c0]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x83104e40
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0x40
mov byte [esp + eax + 0x20], bl
sub eax, esi
inc esi
mov bl, byte [esp + eax + 0x1e]
add eax, 0xfffffffe
jmp 0x40cf5f
lea ebp, [ecx + 6]
cmp esi, ebp
je 0x40cfc5
lea ebp, [ecx + 2]
cmp esi, ebp
jne 0x40cf0f
jmp 0x40cfa7
lea edx, [ecx + 5]
cmp esi, edx
jne 0x40d189
lea edx, [eax + 0x2f2889b0]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x2f2889b0
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0x30
jmp 0x40d089
mov dword [esp + 0x3c], edx
lea edx, [ecx + 9]
cmp esi, edx
je 0x40cf5f
cmp esi, dword [esp + 0x3c]
jbe 0x40d19c
lea edx, [eax - 0x7b4db1a0]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x84b24e60
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0x60
mov byte [esp + eax + 0x20], bl
jmp 0x40d090
lea edx, [ecx + 6]
cmp esi, edx
mov edx, dword [esp]
jne 0x40cf1e
jmp 0x40cf5f
lea edx, [ecx + 2]
cmp esi, edx
jne 0x40d1c3
lea edx, [eax - 0x681d1420]
mov edi, dword [esp]
lea ebx, [eax + edi]
add ebx, 0x97e2ebe0
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0xe0
jmp 0x40d089
cmp esi, ebp
jne 0x40d1e2
lea edi, [eax + 0x217b3aa0]
mov ebp, dword [esp]
lea ebx, [eax + ebp]
add ebx, 0x217b3aa0
and edi, ebp
mov dl, 0xa0
jmp 0x40d039
lea edx, [ecx + 8]
cmp esi, edx
mov edx, dword [esp]
je 0x40cfa7
mov edi, edx
lea edx, [eax - 0x1d99ec50]
lea ebx, [eax + edi]
add ebx, 0xe26613b0
and edx, edi
add edx, edx
sub ebx, edx
add bl, 0x30
jmp 0x40d180
mov eax, 0x17b4df0
jmp 0x40d2fc
xor eax, eax
jmp 0x40d2fc
lea eax, [esp + 0x70]
mov eax, dword [eax + 4]
cmp dword [eax + 0x14], 8
jb 0x40d22f
mov eax, dword [eax]
lea ecx, [esp + 0x40]
mov dword [ecx], eax
sub esp, 0xc
lea ebx, [esp + 0x2c]
mov al, byte [ebx]
mov byte [esp + 8], al
mov dword [esp + 4], ecx
lea edi, [esp + 0x50]
mov dword [esp], edi
call fcn.00451cf8
add esp, 0xc
push edi
push esi
push ebx
call fcn.0040d48c
add esp, 0xc
mov eax, dword [ebx + 0x10]
cmp dword [ebx + 0x14], 8
mov ecx, ebx
jb 0x40d26f
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x14]
push edx
push eax
push ecx
push dword [esp + 0x44]
call fcn.00450858
add esp, 0x10
mov ecx, ebx
call fcn.0040d3aa
lea ecx, [esp + 0x44]
call fcn.0040d3aa
mov esi, dword [esp + 8]
test esi, esi
je 0x40d2b3
lock dec dword [esi + 4]
jne 0x40d2b3
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40d2b3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov esi, dword [esp + 0x10]
test esi, esi
je 0x40d2d4
lock dec dword [esi + 4]
jne 0x40d2d4
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40d2d4
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x40d329
lock dec dword [esi + 4]
jne 0x40d329
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock dec dword [esi + 8]
jne 0x40d329
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
jmp 0x40d329
mov eax, 0x1553a40
lea esi, [esp + eax]
add esi, 0x20
xor eax, eax
mov edi, dword [esp + 0x38]
mov dword [edi], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], 0xf
mov byte [edi], 0
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
mov ecx, edi
push eax
push esi
call fcn.00450e50
lea eax, [esp + 0x70]
mov eax, dword [eax + 0x1c]
cmp eax, 0x10
jb 0x40d364
lea ecx, [esp + 0x78]
mov ecx, dword [ecx]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x40d35a
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x40d372
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00471733
add esp, 8
lea eax, [esp + 0x70]
mov eax, dword [eax]
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]