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

Disassembly:
sub esp, 0xc8
mov eax, dword [0x57f7c4]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push ebp
mov eax, 0x51d
mov ebx, ecx
mov word [esp + 0x10], ax
push esi
lea eax, [edi + 8]
mov ecx, 0x51c
mov edx, 0x201
push eax
mov dword [esp + 0x10], ebx
mov word [esp + 0x20], cx
mov word [esp + 0x6c], dx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [edi]
mov ecx, dword [eax + 0xc]
xor ebp, ebp
cmp ecx, ebp
je 0x42a475
lea esi, [ecx - 8]
jmp 0x42a477
xor esi, esi
mov dword [edi + 4], esi
cmp esi, eax
je 0x42a64a
cmp esi, ebp
je 0x42a64a
mov eax, dword [esi + 0xdc]
mov dword [esp + 0x6a], eax
mov cl, 0xa
cmp cl, byte [esi + 0x5808]
sbb dl, dl
and dl, 0xfe
add dl, 2
mov byte [esp + 0x6e], dl
mov ax, word [esi + 0x162]
mov word [esp + 0x6f], ax
fld dword [esi + 0xd0]
fstp dword [esp + 0x71]
fld dword [esi + 0xd4]
fstp dword [esp + 0x75]
fld dword [esi + 0xd8]
fstp dword [esp + 0x79]
mov ecx, dword [esi + 0x1800]
mov dword [esp + 0x7d], ecx
cmp dword [esi + 0x147c], 3
jne 0x42a4f4
mov edx, dword [esi + 0x148c]
mov dword [esp + 0x81], edx
jmp 0x42a4fb
mov dword [esp + 0x81], ebp
push 0x1d
lea eax, [esp + 0x6c]
push eax
mov ecx, ebx
call fcn.004ed0e0
cmp byte [esi + 0x5814], 0
je 0x42a534
cmp dword [esi + 0x147c], 2
jne 0x42a529
mov eax, dword [esi + 0x1488]
add eax, dword [esi + 0x1484]
jmp 0x42a530
movzx eax, byte [esi + 0x1360]
cmp eax, ebp
je 0x42a57e
mov ecx, dword [esi + 0xdc]
mov dword [esp + 0x16], ecx
cmp byte [esi + 0x5814], 0
jne 0x42a54e
mov eax, 0xd
jmp 0x42a56c
cmp dword [esi + 0x147c], 2
jne 0x42a565
mov eax, dword [esi + 0x1488]
add eax, dword [esi + 0x1484]
jmp 0x42a56c
movzx eax, byte [esi + 0x1360]
push 7
lea edx, [esp + 0x18]
push edx
mov ecx, ebx
mov byte [esp + 0x22], al
call fcn.004ed0e0
cmp dword [esi + 0x134c], ebp
jne 0x42a5b8
cmp dword [esi + 0x1348], ebp
jne 0x42a5b8
cmp dword [esi + 0x1438], ebp
jne 0x42a5b8
cmp dword [esi + 0x1350], ebp
jne 0x42a5b8
mov eax, dword [esi + 0x12f4]
cmp eax, ebp
jge 0x42a5ac
xor eax, eax
jmp 0x42a5bd
cmp eax, 0xa
jl 0x42a5bd
mov eax, 9
jmp 0x42a5bd
mov eax, 0xff
mov byte [esp + 0x22], al
cmp dword [esi + 0x1344], ebp
jne 0x42a613
cmp dword [esi + 0x134c], ebp
jne 0x42a613
cmp dword [esi + 0x1348], ebp
jne 0x42a613
cmp dword [esi + 0x5818], ebp
jne 0x42a613
cmp dword [esi + 0x1438], ebp
jne 0x42a613
cmp dword [esi + 0x1350], ebp
je 0x42a5f5
xor eax, eax
jmp 0x42a618
mov esi, dword [esi + 0x12f8]
cmp esi, ebp
jge 0x42a605
xor esi, esi
mov eax, esi
jmp 0x42a618
cmp esi, 5
jl 0x42a60f
mov esi, 4
mov eax, esi
jmp 0x42a618
mov eax, 0xff
mov byte [esp + 0x23], al
push 8
lea eax, [esp + 0x20]
push eax
mov ecx, ebx
call fcn.004ed0e0
mov ecx, dword [edi + 4]
mov eax, dword [ecx + 0xc]
cmp eax, ebp
je 0x42a639
lea esi, [eax - 8]
jmp 0x42a63b
xor esi, esi
mov dword [edi + 4], esi
cmp esi, dword [edi]
je 0x42a64a
cmp esi, ebp
jne 0x42a48a
lea eax, [edi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, 0x405
lea ebx, [edi + 0xb8]
push ebx
mov word [esp + 0x8c], dx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [edi + 0xb0]
mov eax, dword [ecx + 4]
mov dword [edi + 0xb4], eax
cmp eax, ecx
je 0x42a81e
cmp eax, ebp
je 0x42a81e
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x8a], ecx
fld dword [eax + 8]
fstp dword [esp + 0x8e]
lea esi, [eax + 0x49]
fld dword [eax + 0xc]
fstp dword [esp + 0x92]
fld dword [eax + 0x10]
fstp dword [esp + 0x96]
mov dx, word [eax + 0x30]
mov word [esp + 0x9a], dx
movzx ecx, byte [eax + 0x32]
mov byte [esp + 0x9c], cl
movzx edx, byte [eax + 0x33]
mov byte [esp + 0x9d], dl
movzx ecx, byte [eax + 0x34]
mov byte [esp + 0x9e], cl
movzx edx, byte [eax + 0x35]
mov byte [esp + 0x9f], dl
movzx ecx, byte [eax + 0x36]
mov byte [esp + 0xa0], cl
movzx edx, byte [eax + 0x37]
mov byte [esp + 0xa1], dl
movzx ecx, byte [eax + 0x38]
mov byte [esp + 0xa2], cl
movzx edx, byte [eax + 0x39]
mov byte [esp + 0xa3], dl
movzx ecx, byte [eax + 0x41]
mov byte [esp + 0xab], cl
movzx edx, byte [eax + 0x3a]
mov byte [esp + 0xa4], dl
movzx ecx, byte [eax + 0x42]
mov byte [esp + 0xac], cl
movzx edx, byte [eax + 0x3b]
mov byte [esp + 0xa5], dl
movzx ecx, byte [eax + 0x43]
mov byte [esp + 0xad], cl
movzx edx, byte [eax + 0x3c]
mov byte [esp + 0xa6], dl
movzx ecx, byte [eax + 0x44]
mov byte [esp + 0xae], cl
movzx edx, byte [eax + 0x3d]
mov byte [esp + 0xa7], dl
movzx ecx, byte [eax + 0x45]
mov byte [esp + 0xaf], cl
movzx edx, byte [eax + 0x3e]
mov byte [esp + 0xa8], dl
movzx ecx, byte [eax + 0x46]
mov byte [esp + 0xb0], cl
movzx edx, byte [eax + 0x3f]
mov byte [esp + 0xa9], dl
movzx ecx, byte [eax + 0x47]
mov byte [esp + 0xb1], cl
movzx edx, byte [eax + 0x40]
mov byte [esp + 0xaa], dl
movzx ecx, byte [eax + 0x48]
lea edx, [esp + 0xb3]
mov byte [esp + 0xb2], cl
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x42a7d2
push esi
call ebp
mov ecx, 0x14
sub ecx, eax
mov edx, 0x40
sub edx, ecx
mov ecx, dword [esp + 0xc]
push edx
lea eax, [esp + 0x8c]
push eax
call fcn.004ed0e0
mov ecx, dword [edi + 0xb4]
mov eax, dword [ecx + 4]
mov dword [edi + 0xb4], eax
cmp eax, dword [edi + 0xb0]
je 0x42a81e
test eax, eax
jne 0x42a693
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebp, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, 0x601
lea ebx, [edi + 0x34]
push ebx
mov word [esp + 0x40], dx
call ebp
mov ecx, dword [edi + 0x2c]
mov eax, dword [ecx + 0x78]
test eax, eax
je 0x42a84a
lea esi, [eax - 0x74]
jmp 0x42a84c
xor esi, esi
mov dword [edi + 0x30], esi
cmp esi, ecx
je 0x42a8e7
test esi, esi
je 0x42a8e7
nop
cmp dword [esi + 0x70], 0
je 0x42a87f
cmp dword [esi + 0x6c], 0
jne 0x42a870
xor eax, eax
jmp 0x42a885
lea eax, [esi + 0x50]
call fcn.00425af0
mov eax, dword [eax]
mov eax, dword [eax + 0x48]
jmp 0x42a885
mov eax, dword [esi + 0x1a8]
cmp eax, 2
je 0x42a8c6
mov ecx, dword [esi + 0x88]
mov dword [esp + 0x3e], ecx
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x42], 0
mov dx, word [esi + 0x2a4]
mov word [esp + 0x43], dx
fld dword [esi + 0x7c]
fstp dword [esp + 0x45]
push 0x11
fld dword [esi + 0x84]
lea eax, [esp + 0x40]
push eax
fstp dword [esp + 0x51]
call fcn.004ed0e0
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx + 0x78]
test eax, eax
je 0x42a8d5
lea esi, [eax - 0x74]
jmp 0x42a8d7
xor esi, esi
mov dword [edi + 0x30], esi
cmp esi, dword [edi + 0x2c]
je 0x42a8e7
test esi, esi
jne 0x42a860
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, 0xe01
lea esi, [edi + 0x60]
push esi
mov word [esp + 0x54], dx
call ebp
mov ecx, dword [edi + 0x58]
mov eax, dword [ecx + 4]
mov dword [edi + 0x5c], eax
cmp eax, ecx
je 0x42a967
test eax, eax
je 0x42a967
nop
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x52], ecx
mov dl, byte [eax + 0x34]
mov byte [esp + 0x56], dl
mov cx, word [eax + 0x38]
mov word [esp + 0x57], cx
fld dword [eax + 8]
mov ecx, dword [esp + 0xc]
fstp dword [esp + 0x59]
fld dword [eax + 0xc]
push 0x17
fstp dword [esp + 0x61]
fld dword [eax + 0x10]
fstp dword [esp + 0x65]
mov dx, word [eax + 0x3c]
lea eax, [esp + 0x54]
push eax
mov word [esp + 0x6d], dx
call fcn.004ed0e0
mov ecx, dword [edi + 0x5c]
mov eax, dword [ecx + 4]
mov dword [edi + 0x5c], eax
cmp eax, dword [edi + 0x58]
je 0x42a967
test eax, eax
jne 0x42a910
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
call ebx
mov edx, 0x401
lea esi, [edi + 0x8c]
push esi
mov word [esp + 0x28], dx
call ebp
mov ecx, dword [edi + 0x84]
mov eax, dword [ecx + 4]
mov dword [edi + 0x88], eax
cmp eax, ecx
je 0x42aa03
test eax, eax
je 0x42aa03
lea ebx, [ebx]
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x26], ecx
mov byte [esp + 0x2a], 0
movzx edx, byte [eax + 0x40]
mov byte [esp + 0x2b], dl
mov cl, byte [eax + 0x41]
mov byte [esp + 0x2c], cl
movzx edx, byte [eax + 0x42]
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x2d], dl
push 0x16
fld dword [eax + 8]
fstp dword [esp + 0x32]
fld dword [eax + 0xc]
fstp dword [esp + 0x36]
fld dword [eax + 0x10]
lea eax, [esp + 0x28]
push eax
fstp dword [esp + 0x3e]
call fcn.004ed0e0
mov ecx, dword [edi + 0x88]
mov eax, dword [ecx + 4]
mov dword [edi + 0x88], eax
cmp eax, dword [edi + 0x84]
je 0x42aa03
test eax, eax
jne 0x42a9a0
push esi
call ebx
mov ecx, dword [edi + 0xdc]
mov edx, 0x403
mov word [esp + 0x10], dx
mov eax, dword [ecx + 0x2c]
test eax, eax
je 0x42aa22
add eax, 0xffffffd8
jmp 0x42aa24
xor eax, eax
mov dword [edi + 0xe0], eax
cmp eax, ecx
je 0x42aa78
test eax, eax
je 0x42aa78
mov esi, dword [esp + 0xc]
mov cl, byte [eax + 0xc]
mov byte [esp + 0x12], cl
mov dl, byte [eax + 0x30]
push 4
lea eax, [esp + 0x14]
push eax
mov ecx, esi
mov byte [esp + 0x1b], dl
call fcn.004ed0e0
mov ecx, dword [edi + 0xe0]
mov eax, dword [ecx + 0x2c]
test eax, eax
je 0x42aa64
add eax, 0xffffffd8
jmp 0x42aa66
xor eax, eax
mov dword [edi + 0xe0], eax
cmp eax, dword [edi + 0xdc]
je 0x42aa78
test eax, eax
jne 0x42aa36
mov ecx, dword [esp + 0xcc]
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0051a8be
add esp, 0xc8
ret