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

Disassembly:
sub esp, 0x78
mov edx, dword [esp + 0x7c]
push ebx
push ebp
push esi
mov ebp, dword [edx]
lea eax, [edx + 0x148]
mov dword [esp + 0x30], eax
push edi
lea edi, [edx + 0x2e0]
mov dword [esp + 0x4c], ebp
mov eax, dword [ebp]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x90]
mov ebx, dword [ebp + 8]
mov dword [esp + 0x30], ebx
lea eax, [eax + eax*4]
shl eax, 4
add edi, eax
mov dword [esp + 0x1c], edi
movzx eax, byte [edi + 0x2c]
mov esi, dword [edi + 0x40]
mov dword [esp + 0x3c], esi
lea ecx, [eax + eax*4]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0x44]
add eax, 8
shl ecx, 4
add eax, ecx
xor ecx, ecx
mov dword [esp + 0x48], eax
mov eax, dword [eax + 0x30]
mov dword [esp + 0x14], eax
test edx, edx
jle 0x4b0838
mov eax, dword [esp + 0x8c]
add eax, 0x48
lea esp, [esp]
mov ebp, dword [esp + 0x14]
cmp dword [eax], ebp
mov ebp, dword [esp + 0x4c]
je 0x4b091d
inc ecx
add eax, 4
cmp ecx, edx
jl 0x4b0820
xor eax, eax
xor edx, edx
mov ecx, dword [esp + 0x8c]
not eax
and eax, dword [esp + 0x94]
not edx
and edx, dword [esp + 0x98]
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], edx
mov eax, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x90]
call fcn.004026e0
and eax, 1
test byte [esi + 0x24], 0x40
mov dword [esp + 0x18], eax
je 0x4b088f
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x68], 1
test byte [eax + 0x22], 0x20
je 0x4b0897
mov dword [esp + 0x68], 0
push ebx
call fcn.004ab090
mov esi, eax
push ebx
mov dword [esp + 0x40], esi
mov dword [edi + 0x10], esi
mov dword [edi + 0xc], esi
call fcn.004ab090
add esp, 8
mov dword [esp + 0x58], eax
cmp byte [edi + 0x2c], 0
mov dword [edi + 0x18], eax
mov eax, dword [esp + 0x48]
jbe 0x4b08e4
test byte [eax + 0x24], 8
je 0x4b08e4
mov eax, dword [ebp + 0x48]
inc eax
push eax
push 0
push 0x17
mov dword [ebp + 0x48], eax
push ebx
mov dword [edi], eax
call fcn.004a3dc0
mov eax, dword [esp + 0x58]
add esp, 0x10
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x84], ecx
test cl, 4
je 0x4b092e
push dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
push 0
push esi
push 0x11
push ebx
call fcn.004a3e30
push dword [esp + 0x4c]
push esi
push 0x14
push ebx
call fcn.004a3dc0
add esp, 0x24
mov byte [edi + 0x2d], 0xe
jmp 0x4b1b06
mov eax, 1
xor edx, edx
call fcn.00402540
jmp 0x4b083c
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x24]
test edx, 0x400
je 0x4b0be4
movzx edx, word [ecx + 0x28]
inc dword [ebp + 0x64]
mov esi, dword [ebp + 0x38]
mov dword [esp + 0x48], edx
lea eax, [edx + 2]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0x3c]
mov dword [esp + 0x20], eax
cmp dword [esp + 0x54], esi
jg 0x4b0975
add eax, 2
add eax, edx
mov dword [ebp + 0x3c], eax
lea eax, [edx + 2]
sub esi, eax
mov dword [ebp + 0x38], esi
jmp 0x4b0987
mov eax, dword [ebp + 0x48]
lea esi, [eax + 1]
mov dword [esp + 0x20], esi
lea esi, [edx + 2]
add eax, esi
mov dword [ebp + 0x48], eax
mov eax, dword [edi + 0xc]
xor esi, esi
mov dword [esp + 0x64], eax
test edx, edx
jle 0x4b09e5
mov ebx, dword [esp + 0x18]
mov eax, dword [ecx + 0x30]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x4b09da
mov eax, dword [esp + 0x20]
add eax, 2
add eax, esi
test byte [edx + 0x12], 1
push eax
je 0x4b09c8
push ebx
push esi
push edi
push edx
push ebp
call fcn.00449070
mov eax, dword [edi + 0x10]
add esp, 0x18
mov dword [esp + 0x64], eax
jmp 0x4b09d6
mov eax, dword [edx]
push dword [eax + 0x10]
push ebp
call fcn.00481ed0
add esp, 0xc
mov ecx, dword [esp + 0x3c]
inc esi
cmp esi, dword [esp + 0x48]
jl 0x4b0998
mov ebx, dword [esp + 0x30]
mov eax, dword [ecx + 0x18]
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], esi
jg 0x4b0a06
push 1
push ebx
call fcn.004650f0
add esp, 8
test eax, eax
jne 0x4b0a3c
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x20]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x4b0a40
mov esi, dword [esp + 0x20]
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x78], ecx
cmp dword [eax + 0x54], ecx
jg 0x4b0a62
push 1
push ebx
call fcn.004650f0
add esp, 8
test eax, eax
jne 0x4b0a94
mov ecx, dword [esp + 0x78]
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
inc dword [ebx + 0x20]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x48]
mov dword [ecx + 0xc], 0
mov dword [ecx + 4], eax
lea eax, [esi + 1]
mov dword [ecx + 8], eax
mov dword [ecx + 0x10], 0
mov esi, dword [esp + 0x3c]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x60], ecx
movzx eax, byte [esi + 0x1c]
neg eax
sbb eax, eax
and eax, 0xfffffff7
add eax, 0xfffffffe
mov dword [esp + 0x78], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x74], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], ecx
jg 0x4b0ada
push 1
push ebx
call fcn.004650f0
add esp, 8
test eax, eax
je 0x4b0ad6
mov eax, 1
jmp 0x4b0b12
mov ecx, dword [esp + 0x60]
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x14]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x64]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x20]
mov word [eax + ecx*4], 0xc
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x60]
push dword [esp + 0x78]
push dword [esp + 0x78]
push eax
push ebx
call fcn.004a4260
mov byte [esi + 0x1c], 0
add esp, 0x10
xor esi, esi
cmp dword [esp + 0x48], esi
jle 0x4b0b61
mov ebp, dword [esp + 0x3c]
cmp esi, 0x10
jge 0x4b0b5d
mov ax, word [ebp + 0x1e]
mov cx, si
shr ax, cl
test al, 1
je 0x4b0b56
mov eax, dword [ebp + 0x30]
push dword [eax + esi*4]
push edi
call fcn.0044cc10
add esp, 8
inc esi
cmp esi, dword [esp + 0x48]
jl 0x4b0b34
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
mov esi, 0xa
mov ecx, dword [esp + 0x54]
mov dword [edi + 0x30], eax
dec ecx
mov byte [edi + 0x2d], 0x9a
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x78], ecx
lea ecx, [ebp + 0x80]
lea esp, [esp]
mov edx, dword [ecx]
cmp edx, eax
jl 0x4b0bc1
cmp edx, dword [esp + 0x78]
jg 0x4b0bc1
cmp byte [ecx - 6], 0
je 0x4b0bbb
mov al, byte [ebp + 0x13]
cmp al, 8
jae 0x4b0bb3
movzx eax, al
mov dword [ebp + eax*4 + 0x18], edx
inc byte [ebp + 0x13]
mov eax, dword [esp + 0x20]
mov byte [ecx - 6], 0
mov dword [ecx], 0
add ecx, 0x14
dec esi
jne 0x4b0b90
mov ecx, dword [esp + 0x54]
cmp ecx, dword [ebp + 0x38]
jle 0x4b0bd6
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], eax
push ebp
call fcn.00481bf0
add esp, 4
jmp 0x4b1b09
mov eax, edx
and eax, 0x100
je 0x4b0c6e
test dl, 5
je 0x4b0c6e
mov eax, dword [ecx + 0x30]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax]
inc dword [ebp + 0x48]
mov esi, dword [ebp + 0x48]
push esi
push ecx
push 0
push edi
push eax
push ebp
call fcn.00449070
add esp, 0x18
mov dword [esp + 0x54], eax
cmp eax, esi
je 0x4b0c2a
push esi
push ebp
call fcn.00499c70
mov eax, dword [esp + 0x5c]
add esp, 8
mov esi, dword [edi + 0x10]
push esi
push eax
push 0x26
push ebx
call fcn.004a3dc0
push dword [esp + 0x64]
push esi
push dword [esp + 0x2c]
push 0x49
push ebx
call fcn.004a3e30
mov esi, dword [esp + 0x78]
push 1
push esi
push ebp
call fcn.00481c50
push esi
push 0xffffffffffffffff
push dword [esp + 0x4c]
push ebp
call fcn.00481cb0
add esp, 0x40
mov byte [edi + 0x2d], 0x9f
jmp 0x4b1b09
test eax, eax
je 0x4b0e37
test dl, 2
je 0x4b0e37
xor esi, esi
mov dword [esp + 0x3c], 0x9f
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x48], esi
mov dword [esp + 0x40], esi
test dl, 0x20
je 0x4b0cb7
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x64], 1
mov eax, dword [eax]
mov dword [esp + 0x40], eax
test dl, 0x10
je 0x4b0cca
mov eax, dword [ecx + 0x30]
mov esi, dword [esp + 0x64]
mov esi, dword [eax + esi*4]
mov dword [esp + 0x48], esi
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4b0ce8
mov eax, dword [esp + 0x40]
mov ecx, esi
mov esi, eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x48], esi
jmp 0x4b0cec
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x4b0d52
mov edi, dword [ecx]
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x50], 0x413f4042
push dword [edi + 0x10]
push ebp
call fcn.00483900
movzx ecx, byte [edi]
mov esi, eax
push esi
push dword [esp + 0x48]
push dword [esp + 0x28]
movzx ecx, byte [esp + ecx + 0x14]
push ecx
push ebx
call fcn.004a3e30
push 1
push esi
push ebp
call fcn.00481c50
push dword [esp + 0xa4]
push ebp
call fcn.00499c70
push dword [esp + 0x74]
mov edi, dword [esp + 0x54]
push edi
call fcn.0044cc10
mov esi, dword [esp + 0x84]
add esp, 0x3c
jmp 0x4b0d6e
push dword [esp + 0x38]
neg eax
push dword [esp + 0x18]
sbb eax, eax
and eax, 0xfffffffd
add eax, 0x6d
push eax
push ebx
call fcn.004a3dc0
add esp, 0x10
test esi, esi
je 0x4b0dcc
mov esi, dword [esi]
inc dword [ebp + 0x48]
mov eax, dword [ebp + 0x48]
push eax
push dword [esi + 0x10]
mov dword [esp + 0x68], eax
push ebp
call fcn.00481ed0
mov al, byte [esi]
add esp, 0xc
cmp al, 0x52
je 0x4b0da9
cmp al, 0x50
je 0x4b0da9
mov ecx, dword [esp + 0x18]
xor eax, eax
test ecx, ecx
setne al
lea eax, [eax*2 + 0x50]
jmp 0x4b0dbb
mov ecx, dword [esp + 0x18]
xor eax, eax
test ecx, ecx
sete al
lea eax, [eax*2 + 0x51]
push dword [esp + 0x48]
mov dword [esp + 0x40], eax
push edi
call fcn.0044cc10
add esp, 8
cmp dword [esp + 0x18], 0
mov ecx, dword [ebx + 0x20]
sete al
mov dword [edi + 0x34], ecx
add al, 7
cmp dword [esp + 0x3c], 0x9f
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x14]
mov dword [edi + 0x30], eax
je 0x4b1b09
inc dword [ebp + 0x48]
mov esi, dword [ebp + 0x48]
push esi
push eax
push 0x68
push ebx
call fcn.004a3dc0
push esi
push 0xffffffffffffffff
push dword [esp + 0x2c]
push ebp
call fcn.00481cb0
push esi
push dword [esp + 0x5c]
push dword [esp + 0x88]
push dword [esp + 0x68]
push ebx
call fcn.004a3e30
push 0x53
push ebx
call fcn.004a4340
add esp, 0x3c
jmp 0x4b1b09
test edx, 0x200
je 0x4b13bb
mov esi, dword [edi + 8]
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x8c]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x24], 0
test byte [esi + 0x22], 1
mov dword [esp + 0x28], 0
mov byte [esp + 0x50], 0
mov byte [esp + 0x12], 0
mov byte [esp + 0x13], 0
mov dword [esp + 0x48], eax
je 0x4b0ea1
cmp byte [esi + 0x24], 0
mov esi, dword [esp + 0x40]
jle 0x4b0ea5
cmp word [eax + 0x2e], si
jbe 0x4b0ea5
mov byte [esp + 0x12], 1
mov eax, 1
jmp 0x4b0ea7
mov esi, dword [esp + 0x40]
xor eax, eax
movzx esi, si
mov dword [esp + 0x64], esi
test dl, 0x20
je 0x4b0ec9
mov eax, dword [ecx + 0x30]
mov eax, dword [eax + esi*4]
mov dword [esp + 0x24], eax
lea eax, [esi + 1]
mov dword [esp + 0x64], eax
mov eax, 1
test dl, 0x10
je 0x4b0f59
mov eax, dword [ecx + 0x30]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x38], 1
mov eax, dword [eax + ecx*4]
mov ecx, 0x100
mov dword [esp + 0x28], eax
test word [eax + 0x14], cx
je 0x4b0f24
mov eax, dword [ebp + 0x48]
xor ecx, ecx
inc eax
mov dword [ebp + 0x48], eax
push eax
mov dword [edi + 0x24], eax
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x1c]
cmp byte [esi + eax], 1
sete cl
xor ecx, dword [esp + 0x1c]
push ecx
push 0x17
push ebx
call fcn.004a3dc0
mov eax, dword [ebx + 0x20]
add esp, 0x10
mov dword [edi + 0x28], eax
cmp dword [esp + 0x24], 0
jne 0x4b0f55
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx + 4]
movsx edx, word [eax + esi*2]
test edx, edx
js 0x4b0f55
mov eax, dword [ecx + 0xc]
lea ecx, [edx + edx*2]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0x14], 0
mov eax, dword [esp + 0x38]
jne 0x4b0f59
mov byte [esp + 0x12], 1
jmp 0x4b0f59
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x38]
push ecx
push eax
push dword [esp + 0x20]
push edi
push ebp
call fcn.00448850
mov edx, eax
add esp, 0x14
mov eax, dword [esp + 0x38]
mov dword [esp + 0x20], edx
test eax, eax
je 0x4b0f82
mov cl, byte [esi + eax]
mov byte [esp + 0x50], cl
mov eax, dword [edi + 0x10]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x48]
movzx ecx, word [eax + 0x2e]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x40]
cmp cx, word [esp + 0x64]
jae 0x4b0fe5
mov eax, dword [eax + 0x1c]
xor ecx, ecx
cmp byte [esi + eax], cl
mov eax, dword [esp + 0x18]
sete cl
cmp eax, ecx
je 0x4b0fc2
mov ecx, dword [esp + 0x40]
test eax, eax
je 0x4b0feb
cmp word [esp + 0x64], cx
jne 0x4b0feb
mov bl, byte [esp + 0x12]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov byte [esp + 0x13], bl
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
mov byte [esp + 0x12], 0
jmp 0x4b0ff3
mov eax, dword [esp + 0x18]
jmp 0x4b0fb7
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4b1005
test byte [eax + 0x12], 0x28
mov dword [esp + 0x60], 0
je 0x4b100d
mov dword [esp + 0x60], 1
test ecx, ecx
je 0x4b101f
test byte [ecx + 0x12], 0x28
mov dword [esp + 0x64], 0
je 0x4b1027
mov dword [esp + 0x64], 1
test eax, eax
jne 0x4b116f
cmp word [esp + 0x40], ax
ja 0x4b116f
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], esi
mov al, byte [esp + 0x12]
test al, al
je 0x4b107a
lea eax, [esi + edx]
push eax
push 0
push 0x1a
push ebx
call fcn.004a3dc0
add esp, 0x10
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 1
mov edx, dword [esp + 0x20]
lea eax, [esi + 1]
mov dword [esp + 0x40], eax
mov al, byte [esp + 0x12]
push dword [esp + 0x38]
mov ecx, dword [esp + 0x44]
movzx eax, al
sub ecx, eax
push ecx
push edx
push ebp
call fcn.00448bf0
push dword [esp + 0x50]
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
push dword [esp + 0x34]
push dword [esp + 0x6c]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x34]
push dword [esp + 0x48]
movzx eax, byte [ecx + eax*2 + 0x4d7020]
push eax
push ebx
call fcn.004a3f40
mov eax, dword [esp + 0x50]
add esp, 0x28
test eax, eax
je 0x4b121a
mov eax, dword [eax]
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x24]
add eax, esi
push eax
push ebp
call fcn.00481c50
mov eax, dword [esp + 0x2c]
add eax, esi
push eax
push dword [esp + 0x50]
push ebp
call fcn.00481ed0
push dword [esp + 0x40]
push edi
push ebx
call fcn.004bc170
push dword [esp + 0x64]
call fcn.00481df0
add esp, 0x28
test eax, eax
je 0x4b1126
push dword [esp + 0x54]
mov eax, dword [esp + 0x24]
add eax, esi
push eax
push 0x4c
push ebx
call fcn.004a3dc0
add esp, 0x10
push dword [esp + 0x50]
push dword [esp + 0x44]
call fcn.0047dd10
add esp, 8
cmp al, 0x41
je 0x4b123d
push dword [esp + 0x50]
push dword [esp + 0x44]
call fcn.00484cb0
add esp, 8
test eax, eax
jne 0x4b123d
lea eax, [esp + 0x50]
push eax
mov eax, dword [esp + 0x24]
push 1
add eax, esi
push eax
push ebp
call fcn.00448bf0
jmp 0x4b123a
mov dword [esp + 0x5c], 1
mov dword [esp + 0x40], esi
test eax, eax
je 0x4b1042
mov eax, dword [eax]
lea ecx, [esi + edx]
push ecx
mov dword [esp + 0x7c], ecx
mov eax, dword [eax + 0x10]
push eax
push ebp
mov dword [esp + 0x4c], eax
call fcn.00481ed0
push dword [esp + 0x30]
push edi
push ebx
call fcn.004bc170
mov edx, dword [esp + 0x58]
push edx
call fcn.00481df0
add esp, 0x1c
test eax, eax
je 0x4b11ce
push dword [esp + 0x54]
push dword [esp + 0x7c]
push 0x4c
push ebx
call fcn.004a3dc0
mov edx, dword [esp + 0x50]
add esp, 0x10
mov eax, dword [esp + 0x38]
test eax, eax
je 0x4b106b
movzx eax, byte [esi + eax]
push eax
push edx
call fcn.0047dd10
add esp, 8
cmp al, 0x41
mov eax, dword [esp + 0x38]
jne 0x4b11f4
mov byte [esi + eax], 0x41
movzx eax, byte [esi + eax]
push eax
push dword [esp + 0x44]
call fcn.00484cb0
add esp, 8
test eax, eax
je 0x4b106b
mov eax, dword [esp + 0x38]
mov byte [esi + eax], 0x41
jmp 0x4b106b
cmp byte [esp + 0x13], 0
je 0x4b123e
mov eax, dword [esp + 0x20]
add eax, esi
push eax
push 0
push 0x1a
push ebx
call fcn.004a3dc0
mov dword [esp + 0x74], 0
add esp, 0x10
inc esi
push dword [esp + 0x38]
push dword [esp + 0x48]
call fcn.0047f2c0
mov eax, dword [ebx + 0x20]
add esp, 8
mov dword [edi + 0x34], eax
test esi, esi
je 0x4b127f
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x18]
push esi
push dword [esp + 0x24]
push dword [esp + 0x5c]
movzx eax, byte [ecx + eax*2 + 0x4d7028]
push dword [esp + 0x38]
push eax
push ebx
call fcn.004a3f40
add esp, 0x18
push dword [esp + 0x24]
push edi
call fcn.0044cc10
push dword [esp + 0x30]
push edi
call fcn.0044cc10
add esp, 0x10
cmp dword [esp + 0x68], 0
jne 0x4b1379
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0xc]
test byte [eax + 0x2a], 0x20
jne 0x4b12e1
inc dword [ebp + 0x48]
mov esi, dword [ebp + 0x48]
push esi
push dword [esp + 0x30]
push 0x71
push ebx
call fcn.004a3dc0
mov edx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push edx
push ebp
call fcn.00481cb0
push esi
push edx
push 0x43
push ebx
call fcn.004a3dc0
add esp, 0x30
jmp 0x4b1379
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x14], ecx
je 0x4b137d
push eax
call fcn.004991c0
mov dword [esp + 0x68], eax
movzx ecx, word [eax + 0x2e]
push ecx
push ebp
call fcn.0048dd10
mov ecx, eax
xor edx, edx
mov eax, dword [esp + 0x70]
add esp, 0xc
xor esi, esi
mov dword [esp + 0x68], ecx
cmp dx, word [eax + 0x2e]
jae 0x4b1360
mov ebp, dword [esp + 0x48]
mov edi, eax
lea eax, [esi + ecx]
push eax
mov eax, dword [edi + 4]
movzx eax, word [eax + esi*2]
push eax
push ebp
call fcn.0047dc60
add esp, 8
cwde
push eax
push dword [esp + 0x34]
push 0x2f
push ebx
call fcn.004a3e30
movzx eax, word [edi + 0x2e]
inc esi
mov ecx, dword [esp + 0x7c]
add esp, 0x14
cmp esi, eax
jl 0x4b1321
mov ebp, dword [esp + 0x4c]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x64]
movzx eax, word [eax + 0x2e]
push eax
push ecx
push dword [esp + 0x60]
push dword [esp + 0x20]
push 0x45
push ebx
call fcn.004a3f40
add esp, 0x18
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x3c]
test dword [esi + 0x24], 0x1000
je 0x4b1390
mov byte [edi + 0x2d], 0x9f
jmp 0x4b139d
cmp dword [esp + 0x18], 0
sete al
add al, 7
mov byte [edi + 0x2d], al
mov dword [edi + 0x30], ecx
mov al, byte [esi + 0x26]
and al, 1
mov byte [edi + 0x2e], al
test byte [esi + 0x24], 0xf
jne 0x4b1b09
mov byte [edi + 0x2f], 1
jmp 0x4b1b09
test edx, 0x2000
je 0x4b1aca
mov eax, dword [ebp + 0x44]
inc dword [ebp + 0x48]
mov dword [esp + 0x6c], eax
inc eax
mov dword [ebp + 0x44], eax
mov eax, dword [ebp + 0x48]
push ebx
mov dword [esp + 0x24], 0
mov dword [esp + 0x64], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x58], 0
call fcn.004ab090
mov ecx, dword [esp + 0x4c]
add esp, 4
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x70], eax
xor eax, eax
mov dword [esp + 0x38], eax
mov edx, dword [ecx + 0x10]
mov ecx, dword [esi + 0x30]
mov dword [esp + 0x74], 0
mov dword [esp + 0x2c], edx
mov eax, dword [ecx]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x78], eax
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x8c]
mov byte [edi + 0x2d], 0x10
mov dword [edi + 0x30], ecx
mov al, byte [eax + 0x29]
cmp al, 1
jbe 0x4b1533
movzx eax, al
sub eax, dword [esp + 0x90]
dec eax
push 0
mov dword [esp + 0x6c], eax
lea ecx, [eax + eax*4]
shl ecx, 4
add ecx, 0x58
push ecx
push dword [esp + 0x4c]
call fcn.0047f320
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x3c], ecx
test ecx, ecx
jne 0x4b1492
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0x98]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov edx, dword [esp + 0x68]
lea edi, [ecx + 8]
mov esi, dword [esp + 0x48]
mov al, dl
inc al
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov ecx, 0x14
mov eax, dword [esp + 0x8c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 4]
add ecx, 8
mov dword [esp + 0x68], ecx
cmp edx, 1
jl 0x4b14fe
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x1c]
add ebx, 0x58
add ebp, 0x7c
movzx eax, byte [ebp]
lea ebp, [ebp + 0x50]
mov edi, ebx
add ebx, 0x50
lea esi, [eax + eax*4]
shl esi, 4
add esi, ecx
mov ecx, 0x14
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x68]
dec edx
jne 0x4b14d4
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x4c]
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x8c]
test byte [ecx + 0x22], 8
jne 0x4b157a
test byte [edx + 0x2a], 0x20
jne 0x4b1543
inc dword [ebp + 0x48]
mov eax, dword [ebp + 0x48]
push eax
push 0
push 0x1a
push ebx
mov dword [esp + 0x50], eax
call fcn.004a3dc0
add esp, 0x10
jmp 0x4b1570
mov eax, dword [esp + 0x8c]
mov eax, dword [eax + 4]
mov dword [esp + 0x3c], eax
jmp 0x4b1506
push edx
call fcn.004991c0
mov esi, eax
mov eax, dword [ebp + 0x44]
mov dword [esp + 0x44], eax
lea ecx, [eax + 1]
mov dword [ebp + 0x44], ecx
movzx ecx, word [esi + 0x2e]
push ecx
push eax
push 0x39
push ebx
call fcn.004a3dc0
push esi
push ebp
call fcn.004ad1b0
add esp, 0x1c
inc dword [ebp + 0x48]
mov eax, dword [ebp + 0x48]
mov dword [esp + 0x54], eax
push dword [esp + 0x60]
push 0
push 0x17
push ebx
call fcn.004a3dc0
mov ecx, dword [esp + 0x44]
add esp, 0x10
xor edx, edx
mov dword [esp + 0x84], eax
mov ecx, dword [ecx + 0xc]
cmp ecx, 1
jle 0x4b16cb
mov dword [esp + 0x68], edx
test ecx, ecx
jle 0x4b16c9
mov edi, dword [esp + 0x44]
xor esi, esi
mov ebp, dword [esp + 0x34]
xor ebx, ebx
lea esp, [esp]
mov eax, dword [ebp + 0x14]
add eax, esi
mov ecx, dword [eax]
cmp eax, dword [esp + 0x78]
je 0x4b1607
test byte [ecx + 4], 1
jne 0x4b1607
test byte [eax + 0x14], 2
jne 0x4b1607
mov ebp, 0x1fff
test word [eax + 0x12], bp
mov ebp, dword [esp + 0x34]
je 0x4b1607
push 0
push 0
push ecx
push edi
call fcn.0044f220
push eax
push ebx
push edi
call fcn.004815b0
mov edx, dword [esp + 0x84]
add esp, 0x1c
mov ebx, eax
inc edx
add esi, 0x30
mov dword [esp + 0x68], edx
cmp edx, dword [ebp + 0xc]
jl 0x4b15c0
mov ebp, dword [esp + 0x4c]
mov edx, ebx
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x30]
test edx, edx
je 0x4b16cb
push 0
push 0x30
push dword [ebp]
call fcn.0047f320
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4b1661
push 0x30
push 0
push esi
call sub.MSVCRT.dll_memset
add esp, 0xc
mov byte [esi], 0x48
or eax, 0xffffffff
mov dword [esi + 0x18], 1
mov word [esi + 0x22], ax
mov eax, dword [ebp]
mov dword [esp + 0x68], eax
test esi, esi
jne 0x4b168c
push esi
push eax
call fcn.00483ce0
mov eax, dword [esp + 0x40]
push eax
push dword [esp + 0x74]
call fcn.00483ce0
mov edx, esi
add esp, 0x10
mov dword [esp + 0x38], edx
jmp 0x4b16cb
mov eax, dword [esp + 0x38]
mov dword [esi + 0x10], eax
push esi
mov eax, dword [eax + 4]
and eax, 0x200100
or dword [esi + 4], eax
call fcn.0044f760
mov eax, dword [ebp]
add esp, 4
mov eax, dword [eax + 0x64]
cmp dword [esi + 0x18], eax
jle 0x4b16c1
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebp
call fcn.00481160
add esp, 0xc
mov edx, esi
mov dword [esp + 0x38], edx
jmp 0x4b16cb
xor edx, edx
mov eax, dword [esp + 0x24]
mov esi, 0xf0
mov dword [esp + 0x48], esi
mov dword [esp + 0x28], 0
cmp dword [eax + 0xc], 0
jle 0x4b19d6
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x14]
mov ebx, dword [esp + 0x14]
cmp dword [eax + ecx + 8], ebx
mov ebx, dword [esp + 0x30]
je 0x4b1719
mov ebx, 0x400
test word [eax + ecx + 0x12], bx
mov ebx, dword [esp + 0x30]
je 0x4b19b1
mov eax, dword [eax + ecx]
xor ecx, ecx
mov dword [esp + 0x5c], ecx
test edx, edx
je 0x4b1731
test byte [eax + 4], 1
jne 0x4b1731
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x6c]
push esi
push 0
push 0
push eax
push dword [esp + 0x50]
push ebp
call fcn.004afcc0
mov esi, eax
add esp, 0x1c
mov dword [esp + 0x64], esi
test esi, esi
je 0x4b19a9
movzx ecx, byte [edi + 0x2c]
push 0
push ecx
push dword [esp + 0x98]
lea ecx, [esi + 0x2e0]
push ecx
push dword [esp + 0x4c]
push ebp
call fcn.004b2660
mov eax, dword [esp + 0xa4]
add esp, 0x18
test byte [eax + 0x22], 8
jne 0x4b190e
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
jne 0x4b17a2
or esi, 0xffffffff
mov dword [esp + 0x50], esi
jmp 0x4b17a8
mov esi, ecx
mov dword [esp + 0x50], ecx
mov eax, dword [esp + 0x2c]
test byte [eax + 0x2a], 0x20
jne 0x4b17e4
push 0
push dword [esp + 0x58]
push dword [esp + 0x1c]
push 0xffffffffffffffff
push eax
push ebp
call fcn.004822b0
push esi
push eax
push 0
push dword [esp + 0x64]
push 0x83
push ebx
call fcn.004a3f40
add esp, 0x30
mov dword [esp + 0x5c], eax
jmp 0x4b190a
push eax
call fcn.004991c0
mov ecx, dword [ebp + 0x38]
add esp, 4
mov edx, dword [ebp + 0x3c]
mov dword [esp + 0x80], eax
movzx esi, word [eax + 0x2e]
mov dword [esp + 0x68], esi
mov dword [esp + 0x4c], edx
cmp esi, ecx
jg 0x4b1817
lea eax, [esi + edx]
sub ecx, esi
mov dword [ebp + 0x3c], eax
mov dword [ebp + 0x38], ecx
jmp 0x4b1826
mov eax, dword [ebp + 0x48]
lea edx, [eax + 1]
add eax, esi
mov dword [esp + 0x4c], edx
mov dword [ebp + 0x48], eax
mov dword [esp + 0x7c], 0
test esi, esi
jle 0x4b1884
mov edi, dword [esp + 0x7c]
mov esi, edx
jmp 0x4b1840
mov eax, dword [esp + 0x80]
push 0
push esi
push dword [esp + 0x1c]
mov eax, dword [eax + 4]
movsx eax, word [eax + edi*2]
push eax
push dword [esp + 0x3c]
push ebp
call fcn.004822b0
add esp, 0x18
cmp eax, esi
je 0x4b1874
push esi
push eax
push 0x20
push ebx
call fcn.004a3dc0
add esp, 0x10
inc edi
inc esi
cmp edi, dword [esp + 0x68]
jl 0x4b1840
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4b18ac
push esi
push dword [esp + 0x50]
push 0
push dword [esp + 0x4c]
push 0x46
push ebx
call fcn.004a3f40
mov dword [esp + 0x74], eax
add esp, 0x18
mov eax, dword [esp + 0x50]
test eax, eax
js 0x4b18ed
push dword [esp + 0x54]
push esi
push dword [esp + 0x54]
push 0x31
push ebx
call fcn.004a3e30
push 0
push dword [esp + 0x6c]
push dword [esp + 0x5c]
push 0x6f
push ebx
call fcn.004a3e30
add esp, 0x28
cmp dword [esp + 0x50], 0
je 0x4b18ed
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x4b18ed
mov eax, dword [ebx + 0x20]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x10
push esi
push dword [esp + 0x50]
push ebp
call fcn.00481c50
add esp, 0xc
cmp esi, dword [ebp + 0x38]
jle 0x4b190a
mov eax, dword [esp + 0x4c]
mov dword [ebp + 0x38], esi
mov dword [ebp + 0x3c], eax
mov esi, dword [esp + 0x64]
push dword [esp + 0x70]
push dword [esp + 0x64]
push 0xf
push ebx
call fcn.004a3dc0
mov eax, dword [esp + 0x6c]
add esp, 0x10
test eax, eax
je 0x4b1944
mov edx, dword [ebx + 0x20]
cmp edx, eax
jbe 0x4b193a
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 8], edx
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x58], ecx
cmp byte [esi + 0x27], 0
je 0x4b1952
mov dword [esp + 0x74], 1
mov ecx, dword [esi + 0x320]
test dword [ecx + 0x24], 0x200
je 0x4b1998
cmp dword [esp + 0x28], 0
je 0x4b1971
mov eax, dword [esp + 0x20]
cmp dword [ecx + 0x1c], eax
jne 0x4b1998
mov eax, dword [esp + 0x2c]
test byte [eax + 0x2a], 0x20
je 0x4b1987
mov eax, dword [ecx + 0x1c]
mov eax, dword [eax + 0x34]
and al, 3
cmp al, 2
je 0x4b1998
mov eax, dword [ecx + 0x1c]
or dword [esp + 0x48], 0x1000
mov dword [esp + 0x20], eax
jmp 0x4b19a0
mov dword [esp + 0x20], 0
push esi
call fcn.004b1ee0
add esp, 4
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
add ecx, 0x30
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], eax
cmp eax, dword [edx + 0xc]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
jl 0x4b16f4
mov eax, dword [esp + 0x20]
mov dword [edi + 0x38], eax
test eax, eax
je 0x4b19e8
mov eax, dword [esp + 0x6c]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x38]
test eax, eax
je 0x4b1a04
push eax
push dword [esp + 0x48]
mov dword [eax + 0xc], 0
call fcn.00483ce0
add esp, 8
mov edx, dword [ebx + 0x20]
mov eax, dword [esp + 0x84]
cmp edx, eax
jbe 0x4b1a1c
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov eax, dword [edi + 0xc]
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], esi
jg 0x4b1a40
push 1
push ebx
call fcn.004650f0
add esp, 8
test eax, eax
jne 0x4b1a77
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x84]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebx + 0x18]
or esi, 0xffffffff
sub esi, dword [esp + 0x70]
js 0x4b1a90
mov ecx, dword [edx + 0x70]
test ecx, ecx
je 0x4b1a90
mov eax, dword [ebx + 0x20]
mov dword [ecx + esi*4], eax
mov eax, dword [ebx + 0x20]
dec eax
mov dword [edx + 0x58], eax
mov eax, dword [esp + 0x8c]
cmp byte [eax + 0x29], 1
jbe 0x4b1ab4
push dword [esp + 0x3c]
push dword [esp + 0x48]
call fcn.0047f2c0
add esp, 8
cmp dword [esp + 0x74], 0
jne 0x4b1b09
push dword [esp + 0x78]
push edi
call fcn.0044cc10
add esp, 8
jmp 0x4b1b09
test byte [esp + 0x84], 8
je 0x4b1ada
mov byte [edi + 0x2d], 0x9f
jmp 0x4b1b09
mov ecx, dword [esp + 0x18]
push esi
mov al, byte [ecx + 0x4d7120]
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x18]
push eax
mov dword [edi + 0x30], eax
movzx eax, byte [ecx + 0x4d7144]
push eax
push ebx
call fcn.004a3dc0
add esp, 0x10
mov byte [edi + 0x2f], 1
inc eax
mov dword [edi + 0x34], eax
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 0xc]
mov edx, dword [ecx + 0x14]
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], eax
test eax, eax
jle 0x4b1c39
movzx eax, word [edx + 0x14]
xor esi, esi
mov dword [esp + 0x84], eax
test al, 6
jne 0x4b1c1d
mov ecx, dword [edx + 0x28]
mov eax, dword [edx + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
je 0x4b1b58
mov eax, dword [esp + 0x8c]
mov byte [eax + 0x27], 1
jmp 0x4b1c1d
mov eax, dword [edx]
mov dword [esp + 0x80], eax
cmp dword [edi], esi
je 0x4b1b6f
test byte [eax + 4], 1
je 0x4b1c1d
test dword [esp + 0x84], 0x200
je 0x4b1be5
mov eax, dword [edi + 0x24]
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], esi
jg 0x4b1ba7
push 1
push ebx
call fcn.004650f0
add esp, 8
test eax, eax
je 0x4b1ba7
mov esi, 1
jmp 0x4b1bde
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x84]
mov word [eax + ecx*4], 0x2e
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x80]
push 0x10
push dword [esp + 0x5c]
push eax
push ebp
call fcn.00483df0
add esp, 0x10
test esi, esi
je 0x4b1c14
mov edx, dword [ebx + 0x20]
cmp edx, esi
jbe 0x4b1c0a
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
mov dword [eax + ecx*4 + 8], edx
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x58], ecx
mov edx, dword [esp + 0x74]
or word [edx + 0x14], 4
mov eax, dword [esp + 0x78]
add edx, 0x30
dec eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], eax
test eax, eax
jg 0x4b1b23
mov ecx, dword [esp + 0x34]
mov esi, dword [ecx + 0x14]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x54], esi
mov dword [esp + 0x3c], ecx
test ecx, ecx
jle 0x4b1d8c
mov ebx, dword [esp + 0x44]
test byte [esi + 0x14], 6
jne 0x4b1d74
movzx eax, word [esi + 0x12]
test al, 0x82
je 0x4b1d74
test eax, 0x800
je 0x4b1d74
mov edx, dword [esp + 0x14]
cmp dword [esi + 8], edx
jne 0x4b1d74
cmp dword [edi], 0
jne 0x4b1d74
mov eax, dword [esi]
push 0
push 0x83
push dword [esp + 0xa0]
mov dword [esp + 0x8c], eax
push dword [esp + 0xa0]
push dword [esi + 0xc]
push edx
push dword [esp + 0x4c]
call fcn.004b2ad0
add esp, 0x1c
mov dword [esp + 0x84], eax
test eax, eax
je 0x4b1d70
test byte [eax + 0x14], 4
jne 0x4b1d70
push 0
push 0x30
push ebx
call fcn.0047f320
add esp, 0xc
mov dword [esp + 0x7c], eax
test eax, eax
je 0x4b1d70
mov esi, dword [esp + 0x84]
mov edi, eax
mov eax, dword [esp + 0x80]
mov ecx, 0xc
push 0x10
push dword [esp + 0x5c]
mov esi, dword [esi]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x84]
mov ecx, dword [eax + 0xc]
push esi
push ebp
mov dword [esi + 0xc], ecx
call fcn.00483df0
add esp, 0x10
test ebx, ebx
je 0x4b1d5f
cmp dword [ebx + 0x208], 0
je 0x4b1d39
push esi
push ebx
call fcn.00467960
add esp, 8
jmp 0x4b1d68
cmp esi, dword [ebx + 0x114]
jb 0x4b1d5f
cmp esi, dword [ebx + 0x118]
jae 0x4b1d5f
mov eax, dword [ebx + 0x110]
mov dword [esi], eax
dec dword [ebx + 0xfc]
mov dword [ebx + 0x110], esi
jmp 0x4b1d68
push esi
call fcn.00438320
add esp, 4
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x3c]
dec ecx
add esi, 0x30
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x54], esi
test ecx, ecx
jg 0x4b1c53
mov ebx, dword [esp + 0x30]
mov eax, dword [edi]
mov dword [esp + 0x80], eax
test eax, eax
je 0x4b1eba
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x1c], eax
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x84], eax
mov dword [esp + 0x78], ecx
cmp dword [ecx + 0x54], eax
jg 0x4b1e33
mov eax, dword [ecx + 0x54]
test eax, eax
je 0x4b1dc4
add eax, eax
jmp 0x4b1dc9
mov eax, 0x33
lea eax, [eax + eax*4]
push 0
shl eax, 2
push eax
push dword [ebx + 4]
push dword [ecx]
call fcn.0047f4e0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x4b1e6a
mov eax, dword [esp + 0x78]
mov eax, dword [eax]
test eax, eax
je 0x4b1e0c
cmp esi, dword [eax + 0x114]
jb 0x4b1e0c
cmp esi, dword [eax + 0x118]
jae 0x4b1e0c
movzx ecx, word [eax + 0xf8]
jmp 0x4b1e18
push esi
call dword [0x4e2598]
mov ecx, eax
add esp, 4
mov eax, 0xcccccccd
mul ecx
mov eax, dword [esp + 0x78]
shr edx, 4
mov dword [eax + 0x54], edx
mov eax, dword [esp + 0x84]
mov dword [ebx + 4], esi
inc dword [ebx + 0x20]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x80]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push ebp
call fcn.00481930
mov edx, dword [esp + 0x38]
xor ebx, ebx
add esp, 4
mov esi, dword [edx + 0x14]
cmp dword [edx + 0xc], ebx
jle 0x4b1eba
test byte [esi + 0x14], 6
jne 0x4b1eb1
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
jne 0x4b1eb1
push 0x10
push dword [esp + 0x5c]
push dword [esi]
push ebp
call fcn.00483df0
mov edx, dword [esp + 0x44]
add esp, 0x10
or word [esi + 0x14], 4
inc ebx
add esi, 0x30
cmp ebx, dword [edx + 0xc]
jl 0x4b1e81
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret