Function at 0x403a30
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x411016
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
push ebx
push ebp
mov ebp, dword [esp + 0x34]
push esi
mov esi, dword [esp + 0x34]
mov ebx, ecx
mov ebp, dword [ebp]
push edi
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 4]
mov edi, dword [esi]
push ebp
push eax
push ecx
push edx
push edi
push 0x41789c
call fcn.00405790
push 0x14
call fcn.00409039
add esp, 0x1c
mov dword [esp + 0x38], eax
xor edi, edi
cmp eax, edi
mov dword [esp + 0x30], edi
je 0x403a9c
mov ecx, dword [ebx + 4]
push ecx
mov ecx, eax
call fcn.00406a30
mov dword [esp + 0x38], eax
jmp 0x403aa0
mov dword [esp + 0x38], edi
or ebp, 0xffffffff
push 0x28
mov dword [esp + 0x34], ebp
call fcn.00409039
add esp, 4
mov dword [esp + 0x24], eax
cmp eax, edi
mov dword [esp + 0x30], 1
je 0x403ad1
mov edx, dword [esp + 0x38]
mov ecx, eax
push edx
call fcn.00407130
mov ebx, eax
jmp 0x403ad3
xor ebx, ebx
mov ax, word [esi + 0x18]
mov ecx, dword [esi + 0x14]
mov dx, word [esi + 0x10]
mov dword [esp + 0x30], ebp
xor ebp, ebp
mov dword [esp + 0x14], edi
push ebp
push ebp
push eax
mov eax, dword [esi + 0xc]
push ecx
mov cx, word [esi + 8]
push edx
mov edx, dword [esi + 4]
push eax
mov eax, dword [esp + 0x50]
push ecx
push edx
mov ecx, dword [eax + 4]
mov dword [esp + 0x38], edi
push ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x40], ebp
call fcn.00408f3c
mov ecx, ebx
call fcn.004073b0
mov ecx, ebx
call fcn.00407280
test eax, eax
je 0x403b31
mov ecx, ebx
inc edi
call fcn.00407280
test eax, eax
jne 0x403b25
mov ecx, ebx
call fcn.00407680
mov ecx, dword [esp + 0x38]
call fcn.00406f10
test di, di
jne 0x403bef
push 0x417898
call fcn.00409052
inc eax
lea edx, [eax + eax]
push edx
call fcn.00409039
mov esi, dword [esp + 0x44]
add esp, 8
test eax, eax
mov dword [esi], eax
je 0x403b81
push 0x417898
push eax
call fcn.00409014
add esp, 8
mov dword [esp + 0x14], 1
mov edi, dword [esp + 0x1c]
test ebx, ebx
je 0x403b91
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x403b9f
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esi]
test eax, eax
je 0x403bbc
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x403bbc
push eax
call fcn.0040906f
add esp, 4
mov dword [esi], 0
test ebp, ebp
je 0x403bc9
push ebp
call fcn.0040906f
add esp, 4
test edi, edi
je 0x403bd6
push edi
call fcn.0040906f
add esp, 4
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x24
ret 8
movsx eax, di
mov ecx, eax
shl ecx, 6
add ecx, eax
lea edi, [eax + ecx*2]
shl edi, 1
push edi
call fcn.00409039
push edi
mov ebp, eax
call fcn.00409039
add esp, 8
mov edi, eax
test ebp, ebp
mov dword [esp + 0x1c], edi
je 0x403e70
test edi, edi
je 0x403e70
mov word [ebp], 0
mov word [edi], 0
mov dx, word [esi + 0x18]
mov eax, dword [esi + 0x14]
mov cx, word [esi + 0x10]
push 0
push 0
push edx
mov edx, dword [esi + 0xc]
push eax
mov ax, word [esi + 8]
push ecx
mov ecx, dword [esi + 4]
push edx
mov edx, dword [esp + 0x50]
push eax
push ecx
mov eax, dword [edx + 4]
push eax
call fcn.00408f3c
mov ecx, ebx
call fcn.004073b0
push 4
mov ecx, ebx
call fcn.00407340
push 6
mov ecx, ebx
mov dword [esp + 0x24], eax
call fcn.00407340
push 0xe
mov ecx, ebx
call fcn.00407340
mov ecx, ebx
mov dword [esp + 0x24], eax
call fcn.00407280
test eax, eax
je 0x403db0
mov ecx, dword [esp + 0x20]
or esi, 0xffffffff
cmp dword [ecx + 0xac], esi
je 0x403da1
mov edx, dword [esp + 0x24]
mov ecx, dword [edx + 0xac]
cmp ecx, esi
jne 0x403cba
xor eax, eax
jmp 0x403cc0
mov eax, dword [edx + 0xb0]
cmp word [eax], si
je 0x403d4a
cmp ecx, esi
jne 0x403cd1
xor eax, eax
jmp 0x403cd7
mov eax, dword [edx + 0xb0]
cmp word [eax], 0xfff6
je 0x403d4a
cmp ecx, esi
jne 0x403ce5
xor eax, eax
jmp 0x403ceb
mov eax, dword [edx + 0xb0]
cmp word [eax], 0xfffc
je 0x403d4a
cmp word [esp + 0x18], 0
jne 0x403d06
push 0x417894
push ebp
call fcn.00409014
jmp 0x403d11
push 0x41788c
push ebp
call fcn.00408fea
mov eax, dword [esp + 0x28]
add esp, 8
cmp dword [eax + 0xac], esi
jne 0x403d24
xor eax, eax
jmp 0x403d2a
mov eax, dword [eax + 0xb0]
push eax
push ebp
call fcn.00408fea
push 0x417894
push ebp
call fcn.00408fea
mov eax, dword [esp + 0x28]
add esp, 0x10
inc eax
mov dword [esp + 0x18], eax
jmp 0x403da1
cmp word [esp + 0x10], 0
jne 0x403d5f
push 0x417894
push edi
call fcn.00409014
jmp 0x403d6a
push 0x41788c
push edi
call fcn.00408fea
mov eax, dword [esp + 0x28]
add esp, 8
cmp dword [eax + 0xac], esi
jne 0x403d7d
xor eax, eax
jmp 0x403d83
mov eax, dword [eax + 0xb0]
push eax
push edi
call fcn.00408fea
push 0x417894
push edi
call fcn.00408fea
mov eax, dword [esp + 0x20]
add esp, 0x10
inc eax
mov dword [esp + 0x10], eax
mov ecx, ebx
call fcn.00407280
test eax, eax
jne 0x403c95
mov ecx, ebx
call fcn.00407680
mov ecx, dword [esp + 0x38]
call fcn.00406f10
mov esi, dword [esp + 0x3c]
mov eax, dword [esi]
test eax, eax
je 0x403dd3
push eax
call fcn.0040906f
add esp, 4
cmp word [esp + 0x10], 0
jne 0x403deb
push 0x417898
call fcn.00409052
add esp, 4
inc eax
jmp 0x403e04
push edi
call fcn.00409052
push ebp
mov edi, eax
call fcn.00409052
lea eax, [edi + eax + 2]
mov edi, dword [esp + 0x24]
add esp, 8
lea edx, [eax + eax]
push edx
call fcn.00409039
add esp, 4
mov dword [esi], eax
test eax, eax
je 0x403b85
cmp word [esp + 0x10], 0
je 0x403e55
cmp word [esp + 0x18], 0
je 0x403e55
push 0x417888
push ebp
call fcn.00408fea
push edi
push ebp
call fcn.00408fea
mov eax, dword [esi]
push ebp
push eax
call fcn.00409014
add esp, 0x18
mov dword [esp + 0x14], 1
jmp 0x403b85
push 0x417898
push eax
call fcn.00409014
add esp, 8
mov dword [esp + 0x14], 1
jmp 0x403b85
mov esi, dword [esp + 0x3c]
jmp 0x403b85