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

Disassembly:
sub esp, 0x60
push ebx
push ebp
push esi
mov esi, edx
push edi
mov dword [esp + 0x1c], esi
mov eax, dword [esi]
mov ebx, dword [esi + 0x38]
test ebx, ebx
mov bp, word [eax + 0x10]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x4c], ebp
je 0x4227ab
mov edi, dword [ebx + 4]
cmp byte [edi + 8], 0x18
je 0x4227a1
mov edx, edi
mov ecx, esi
call fcn.004551d0
test eax, eax
jne 0x422660
mov edi, dword [edi + 0xc]
mov ecx, esi
mov edx, edi
call fcn.004551d0
test eax, eax
je 0x422650
mov cl, byte [eax + 0x11]
and cl, 0xef
mov byte [eax + 0x11], cl
mov ecx, dword [ebx + 4]
cmp edi, ecx
jne 0x422674
mov esi, edi
jmp 0x4226a8
mov esi, dword [edi]
cmp esi, ecx
je 0x4226a8
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x4226a2
mov dx, word [eax + 0xa]
and edx, 0xf000
cmp edx, 0x4000
jne 0x4226a2
cmp byte [eax + 8], 1
jne 0x4226a2
mov eax, dword [eax + 0x18]
cmp byte [eax + 4], 2
je 0x4226a8
mov esi, dword [esi]
cmp esi, ecx
jne 0x42267a
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x4226e2
mov cx, word [eax + 0xa]
and ecx, 0xf000
cmp ecx, 0x4000
jne 0x4226e2
mov esi, dword [esi + 0xc]
mov eax, 0x63
cmp dword [esi + 4], eax
jne 0x4226e2
mov edx, dword [esi + 0x18]
mov ecx, dword [edx + 0x18]
cmp byte [ecx + 4], 2
jne 0x4226e2
mov esi, dword [esi + 0xc]
cmp dword [esi + 4], eax
je 0x4226ce
cmp dword [edi + 4], 0x16c
jne 0x4226f9
cmp esi, edi
jne 0x4226f2
mov esi, dword [esi + 0xc]
mov ecx, edi
call fcn.0042cda0
mov ax, word [esi + 0x10]
test ax, ax
je 0x42271c
mov edx, dword [esp + 0x28]
mov word [0x493b40], ax
and eax, 0xffff
mov ecx, dword [edx + 0x24]
add ecx, eax
mov dword [0x493b38], ecx
mov eax, dword [esp + 0x1c]
push esi
push fcn.0042cbc0
push eax
mov edx, dword [eax]
mov ecx, 0x11f
push edx
mov edx, ebp
call fcn.0042d520
mov edx, ebp
mov ecx, 0x11f
push eax
push 0x48f9c8
push 0x48f9c8
call fcn.0042d520
mov edx, ebp
mov ecx, 0x63
push eax
call fcn.0042e2a0
mov ecx, dword [eax + 0xc]
mov dx, word [ecx + 0xa]
and edx, 0xf000
cmp edx, 0x4000
je 0x42278a
cmp byte [ecx + 8], 0xd
je 0x42278a
mov ecx, dword [ecx + 0xc]
mov dx, word [ecx + 0xa]
and edx, 0xf000
cmp edx, 0x4000
jne 0x42276f
mov dl, byte [ecx + 0x12]
mov cl, byte [ecx + 0x13]
mov byte [eax + 0x12], dl
mov byte [eax + 0x13], cl
mov eax, dword [eax + 0x18]
mov esi, dword [esp + 0x1c]
or byte [eax + 0x11], 0x10
mov ebx, dword [ebx]
test ebx, ebx
jne 0x422636
mov ecx, 6
call fcn.00433cf0
mov ecx, 6
mov dword [esp + 0x24], eax
call fcn.00433cf0
mov ebx, dword [esp + 0x1c]
xor ebp, ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ebp
mov edx, dword [ebx + 0x1c]
mov esi, dword [ebx + 0x28]
mov edi, dword [ebx + 0x30]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esi + 0x48]
call fcn.00433de0
test eax, eax
je 0x42281a
call fcn.004632f0
mov ecx, dword [esp + 0x18]
mov dword [eax + 8], esi
test ecx, ecx
mov dword [eax], 0
jne 0x422810
mov dword [esp + 0x18], eax
mov ebp, eax
jmp 0x42281a
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov dword [ecx], eax
cmp esi, edi
je 0x422822
mov esi, dword [esi]
jmp 0x4227e2
test ebp, ebp
mov dword [esp + 0x30], 0
je 0x422ece
jmp 0x422838
mov ebp, dword [esp + 0x44]
mov esi, dword [ebp + 8]
mov edx, dword [ebp]
mov ecx, ebp
mov dword [esp + 0x20], esi
mov dword [esp + 0x44], edx
call fcn.00463320
mov edx, dword [esp + 0x2c]
mov ecx, dword [esi + 0x40]
call fcn.00433de0
test eax, eax
je 0x4228c1
mov edx, dword [esi + 8]
test edx, edx
je 0x422889
mov ecx, dword [edx + 8]
xor eax, eax
mov ecx, dword [ecx + 0x58]
cmp dword [ecx], ebx
je 0x422879
inc eax
add ecx, 4
cmp eax, 8
jl 0x42286c
cmp eax, 8
jl 0x422885
mov edx, dword [edx + 4]
test edx, edx
jne 0x422864
test edx, edx
jne 0x4228a6
call fcn.004632f0
mov ecx, dword [esp + 0x18]
mov dword [eax], 0
mov dword [eax + 8], esi
mov dword [esp + 0x18], eax
mov dword [ecx], eax
jmp 0x422ec2
mov edx, dword [edx + 8]
mov ecx, 8
lea edi, [esp + 0x50]
mov dword [esp + 0x14], 1
mov esi, dword [edx + 0x58]
rep movsd dword es:[edi], dword [esi]
jmp 0x4228f0
mov eax, dword [esi + 8]
test eax, eax
je 0x4228db
mov eax, dword [eax + 8]
mov ecx, 8
lea edi, [esp + 0x50]
mov esi, dword [eax + 0x58]
rep movsd dword es:[edi], dword [esi]
jmp 0x4228e8
mov ecx, 8
xor eax, eax
lea edi, [esp + 0x50]
rep stosd dword es:[edi], eax
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x50]
xor ecx, ecx
test eax, eax
mov dword [esp + 0x10], ecx
je 0x422911
lea eax, [esp + 0x50]
mov edx, dword [eax + 4]
add eax, 4
inc ecx
test edx, edx
jne 0x422902
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x24]
dec edx
mov ecx, esi
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x78]
call fcn.00434190
mov edx, dword [esp + 0x74]
mov ecx, esi
call fcn.00434240
mov edi, dword [esp + 0x20]
mov ecx, esi
mov edx, dword [edi + 0x40]
call fcn.00433fb0
mov ebp, dword [edi + 0x1c]
mov eax, dword [edi + 0x20]
cmp ebp, eax
mov dword [esp + 0x40], ebp
mov dword [esp + 0x48], eax
je 0x422cec
test byte [ebp + 9], 1
je 0x422cdd
mov cx, word [ebp + 0xa]
and ecx, 0xf000
cmp ecx, 0x4000
je 0x42297e
cmp byte [ebp + 8], 0xd
jne 0x422cdd
mov ax, word [ebp + 0x10]
test ax, ax
je 0x4229a1
mov edx, dword [esp + 0x28]
mov word [0x493b40], ax
and eax, 0xffff
mov ecx, dword [edx + 0x24]
add ecx, eax
mov dword [0x493b38], ecx
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x422ac3
mov edx, dword [esp + 0x10]
lea esi, [esp + edx*4 + 0x50]
mov ax, word [edi + 0xa]
and eax, 0xf000
cmp eax, 0x4000
jne 0x422ab9
cmp byte [edi + 8], 1
jne 0x422ab9
test byte [edi + 0x11], 0x10
je 0x422ab9
mov eax, dword [edi + 0x18]
cmp byte [eax + 4], 2
jne 0x422ab9
cmp eax, ebx
jne 0x422a92
cmp dword [esi], ebx
jne 0x422ef3
mov eax, dword [esp + 0x10]
xor edx, edx
dec eax
mov dword [esi], edx
mov dword [esp + 0x10], eax
mov al, byte [ebp + 0x13]
sub esi, 4
test al, al
jne 0x422a19
mov dword [esp + 0x14], edx
jmp 0x422ab9
mov eax, dword [ebp]
mov cl, byte [eax + 0x13]
test cl, cl
jne 0x422a4e
mov cx, word [eax + 0xa]
and ecx, 0xf000
cmp ecx, 0x4000
je 0x422a3b
cmp byte [eax + 8], 0xd
jne 0x422a4e
mov ecx, dword [eax + 4]
cmp ecx, 0x139
je 0x422a4e
cmp ecx, 0x13a
jne 0x422a52
mov eax, dword [eax]
jmp 0x422a1c
mov eax, dword [eax + 0xc]
mov cx, word [eax + 0xa]
and ecx, 0xf000
cmp ecx, 0x4000
je 0x422a82
cmp byte [eax + 8], 0xd
je 0x422a82
mov eax, dword [eax + 0xc]
mov cx, word [eax + 0xa]
and ecx, 0xf000
cmp ecx, 0x4000
jne 0x422a67
cmp eax, ebp
jne 0x422a8c
mov dword [esp + 0x14], edx
jmp 0x422ab9
mov dword [esp + 0x30], eax
jmp 0x422ab9
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x422aad
mov ecx, dword [esp + 0x10]
mov dword [esi], 0
dec ecx
sub esi, 4
mov dword [esp + 0x10], ecx
jmp 0x422ab9
mov edx, dword [eax + 0x1c]
mov ecx, dword [esp + 0x24]
call fcn.00433d80
mov edi, dword [edi]
test edi, edi
jne 0x4229b4
mov esi, dword [ebp + 0x1c]
test esi, esi
je 0x422b45
mov ax, word [esi + 0xa]
and eax, 0xf000
cmp eax, 0x4000
jne 0x422b3f
cmp byte [esi + 8], 1
jne 0x422b3f
mov ecx, dword [esi + 0x18]
cmp byte [ecx + 4], 2
jne 0x422b3f
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x422b33
mov edx, dword [esp + 0x10]
xor eax, eax
test edx, edx
jl 0x422b10
mov edi, dword [esp + 0x10]
lea edx, [esp + 0x50]
cmp dword [edx], ecx
je 0x422b14
inc eax
add edx, 4
cmp eax, edi
jle 0x422b02
jmp 0x422b14
mov edi, dword [esp + 0x10]
cmp eax, edi
jle 0x422b3f
mov edx, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x50], ecx
inc edx
cmp ebx, ecx
mov dword [esp + 0x10], edx
jne 0x422b3f
mov dword [esp + 0x14], 1
jmp 0x422b3f
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x24]
call fcn.00433d30
mov esi, dword [esi]
test esi, esi
jne 0x422aca
mov eax, dword [esp + 0x14]
test eax, eax
je 0x422b79
mov cl, byte [ebp + 0x12]
inc cl
mov al, cl
mov byte [ebp + 0x12], cl
cmp al, 8
jne 0x422b63
mov dword [esp + 0x34], 1
cmp ebp, dword [esp + 0x30]
jne 0x422b79
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x34]
test eax, eax
je 0x422cd1
mov al, byte [ebp + 0x13]
test al, al
jne 0x422cd1
mov eax, dword [ebp + 4]
cmp eax, 0x139
je 0x422cd1
cmp eax, 0x13a
je 0x422cd1
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x34], 0
cmp dword [ecx], 0
je 0x422bdb
mov esi, ecx
mov ecx, ebp
mov edx, esi
call fcn.004238e0
mov ecx, dword [esp + 0x38]
mov edx, esi
call fcn.00434020
mov eax, dword [esp + 0x20]
or dword [eax + 0x18], 0x40000
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0x18
je 0x422cd1
test byte [ebx + 9], 1
je 0x422cc4
mov eax, dword [ebx + 4]
cmp eax, 0x139
je 0x422cc4
cmp eax, 0x13a
je 0x422cc4
mov al, byte [ebx + 0x13]
test al, al
je 0x422cd1
xor eax, eax
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x422c25
mov edi, dword [ebx + 0x1c]
jmp 0x422c28
mov edi, dword [ebx + 0x18]
test edi, edi
je 0x422cb6
mov dx, word [edi + 0xa]
and edx, 0xf000
cmp edx, 0x4000
jne 0x422ca8
cmp byte [edi + 8], 1
jne 0x422ca8
mov ebp, dword [edi + 0x18]
cmp byte [ebp + 4], 2
jne 0x422ca8
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x422ca8
cmp ebp, dword [esp + 0x1c]
je 0x422ca8
mov ecx, 6
call fcn.00433cf0
mov edx, dword [ebp + 0x1c]
mov esi, eax
mov ecx, esi
call fcn.00433d30
mov edx, esi
mov ecx, ebx
call fcn.004238e0
mov ecx, dword [ebx + 0xc]
mov edx, esi
call fcn.004238e0
mov ecx, esi
call fcn.00433c90
mov eax, dword [edi + 0x18]
mov ecx, dword [esp + 0x38]
mov edx, dword [eax + 0x1c]
call fcn.00433d30
mov eax, dword [esp + 0x20]
or dword [eax + 0x18], 0x40000
mov edi, dword [edi]
test edi, edi
jne 0x422c30
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
inc eax
cmp eax, 2
mov dword [esp + 0x3c], eax
jl 0x422c1c
mov ebx, dword [ebx + 0xc]
cmp byte [ebx + 8], 0x18
jne 0x422be8
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x20]
mov ebp, dword [ebp]
cmp ebp, eax
mov dword [esp + 0x40], ebp
jne 0x422958
mov eax, dword [esp + 0x14]
test eax, eax
je 0x422ec2
mov edi, dword [edi + 0xc]
test edi, edi
je 0x422eb0
mov ebp, dword [esp + 0x2c]
mov ecx, dword [edi]
mov esi, dword [edi + 0xc]
mov dword [esp + 0x48], ecx
mov edx, ebp
mov ecx, dword [esi + 0x40]
call fcn.00433de0
test eax, eax
jne 0x422ea4
mov edx, dword [esi + 8]
mov eax, dword [edx + 4]
test eax, eax
je 0x422dd4
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
push esi
push ebx
mov edx, edi
call fcn.00446d20
mov edi, dword [esi + 0x40]
mov ebp, eax
mov ecx, edi
call fcn.004341e0
mov ecx, edi
mov dword [ebp + 0x40], eax
call fcn.004341e0
mov ecx, edi
mov dword [ebp + 0x44], eax
call fcn.004341e0
mov ecx, 8
mov dword [ebp + 0x48], eax
call fcn.00433cf0
mov ecx, 8
mov dword [ebp + 0x24], eax
call fcn.00433cf0
mov ecx, 6
mov dword [ebp + 0x28], eax
call fcn.00433cf0
mov ecx, dword [esi + 0x80]
mov dword [ebp + 0x4c], eax
mov ax, word [esi + 0x86]
mov dword [ebp + 0x80], ecx
mov edx, 0x20
mov ecx, 4
mov word [ebp + 0x86], ax
call fcn.00485f40
mov esi, dword [ebx + 0x58]
mov dword [ebp + 0x58], eax
mov ecx, 8
mov edi, eax
mov eax, dword [ebp + 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax]
mov esi, ebp
cmp byte [ecx + 8], 0x19
jne 0x422e16
mov eax, ecx
jmp 0x422e16
mov eax, dword [esi + 0x1c]
cmp byte [eax + 8], 0x18
jne 0x422df1
mov ecx, dword [esi + 0x20]
mov eax, dword [eax]
cmp eax, ecx
je 0x422dee
cmp byte [eax + 8], 0x18
je 0x422de0
jmp 0x422df1
mov eax, dword [eax + 0xc]
test byte [eax + 9], 1
je 0x422dfa
mov eax, dword [eax + 0xc]
mov edx, dword [esp + 0x10]
lea ecx, [esp + edx*4 + 0x50]
mov edx, dword [esp + edx*4 + 0x50]
cmp edx, ebx
je 0x422e16
mov edx, dword [ecx - 4]
mov eax, dword [eax]
sub ecx, 4
cmp edx, ebx
jne 0x422e0a
mov cx, word [eax + 0x10]
test cx, cx
je 0x422e3b
mov edx, dword [esp + 0x28]
mov word [0x493b40], cx
and ecx, 0xffff
mov edx, dword [edx + 0x24]
add edx, ecx
mov dword [0x493b38], edx
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x4c]
push eax
push fcn.0042cbc0
mov eax, dword [ebx]
push ebx
push eax
mov edx, edi
mov ecx, 0x11f
call fcn.0042d520
mov edx, edi
mov ecx, 0x11f
push eax
push 0x48f9c8
push 0x48f9c8
call fcn.0042d520
mov edx, edi
mov ecx, 0x63
push eax
call fcn.0042e2a0
mov eax, dword [eax + 0x18]
mov ebp, dword [ebx + 0x1c]
mov edx, ebp
mov dword [esp + 0x2c], ebp
mov cl, byte [eax + 0x11]
or cl, 0x10
mov byte [eax + 0x11], cl
mov ecx, dword [esi + 0x40]
call fcn.00433d30
mov ecx, dword [esi + 0x48]
mov edx, ebp
call fcn.00433d30
mov edi, dword [esp + 0x48]
test edi, edi
jne 0x422d07
mov edx, dword [esp + 0x20]
mov ecx, 8
lea esi, [esp + 0x50]
mov edi, dword [edx + 0x58]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x422834
mov ecx, dword [esp + 0x24]
call fcn.00433c90
mov eax, dword [esp + 0x38]
cmp dword [eax], 0
jne 0x422ee9
mov ecx, eax
call fcn.00433c90
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret 8
mov edx, dword [esp + 0x10]
mov esi, dword [ebp + 0xc]
mov ecx, dword [ebp]
lea eax, [esp + edx*4 + 0x4c]
mov edx, dword [esp + edx*4 + 0x4c]
cmp edx, ebx
je 0x422f15
mov edx, dword [eax - 4]
mov ecx, dword [ecx]
sub eax, 4
cmp edx, ebx
jne 0x422f09
mov edx, ebp
call fcn.0042cc40
mov ebp, esi
jmp 0x422cd1