Function at 0x439610
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x7c
mov eax, dword [esp + 0x80]
push ebx
push ebp
mov ebp, dword [eax]
mov edx, dword [ebp + 0xc]
mov dword [esp + 8], edx
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x8c]
shl edx, 6
lea ebx, [edx + eax + 0x28]
movzx edx, byte [ebx + 0x28]
mov eax, dword [eax + 8]
imul edx, edx, 0x38
push esi
lea eax, [edx + eax + 8]
push edi
mov edi, dword [eax + 0x18]
mov dword [esp + 0x38], eax
mov eax, dword [ebx]
mov esi, eax
shr esi, 0x19
xor ecx, ecx
and esi, 1
test eax, 0x800000
mov dword [esp + 0x44], ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], esi
je 0x439686
test byte [esp + 0x98], 0x40
mov dword [esp + 0x5c], 1
je 0x43968a
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x10]
call fcn.00414e90
mov dword [esp + 0x3c], eax
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0x10]
call fcn.00414e90
mov dword [esp + 0x50], eax
mov dword [ebx + 0x20], eax
mov al, byte [ebx + 0x28]
test al, al
jbe 0x4396de
mov ecx, dword [esp + 0x38]
test byte [ecx + 0x15], 8
je 0x4396de
mov edx, dword [ebp + 0x48]
inc edx
mov dword [ebp + 0x48], edx
mov eax, edx
mov edx, dword [esp + 0x10]
push edx
xor ecx, ecx
mov edx, 7
mov dword [ebx + 0xc], eax
call fcn.00414e70
add esp, 4
mov eax, dword [ebx]
test eax, 0x8000000
je 0x439885
mov eax, dword [ebx + 8]
mov edi, dword [eax]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 4]
mov dword [esp + 0x5c], eax
mov eax, ebp
mov dword [esp + 0x4c], edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x48], edx
call fcn.0040ea90
lea esi, [edi + 2]
mov ecx, ebp
mov dword [esp + 0x58], esi
call fcn.0040ec60
mov ecx, 1
cmp edi, ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x38], ecx
jl 0x4397a3
lea esp, [esp]
xor eax, eax
test edi, edi
mov dword [esp + 0x2c], eax
jle 0x439796
lea ebx, [ebx]
mov edx, dword [esp + 0x34]
cmp dword [edx + eax*8], ecx
je 0x439754
inc eax
cmp eax, edi
jl 0x439740
mov dword [esp + 0x2c], eax
jmp 0x439796
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
lea esi, [eax + ecx + 1]
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x48]
mov eax, dword [eax + edx*4 + 8]
mov edx, dword [esp + 0x1c]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x1c]
mov ecx, dword [eax + ecx*8]
mov eax, dword [ecx + 0xc]
mov edi, ebp
call fcn.00415dc0
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x2c]
cmp eax, edi
je 0x4397a3
inc ecx
cmp ecx, edi
mov dword [esp + 0x38], ecx
jle 0x439730
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x5c]
mov ecx, dword [esi + 0x14]
push edx
mov eax, edi
mov edx, 7
call fcn.00414e70
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
push edx
lea eax, [edi + 1]
dec ecx
mov edx, 7
call fcn.00414e70
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0x1c]
neg eax
sbb eax, eax
and eax, 0xfffffff7
add eax, 0xfffffffe
push eax
push ecx
mov ecx, dword [esp + 0x4c]
mov eax, edi
mov edi, dword [esp + 0x20]
push 0x80
call fcn.004197c0
mov eax, dword [esp + 0x60]
add esp, 0x14
test eax, eax
mov dword [esi + 0x1c], 0
jle 0x439850
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x34]
add esi, 8
add edi, 4
mov dword [esp + 0x4c], eax
cmp byte [edi], 0
je 0x43983f
mov eax, dword [esi]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x1c]
lea eax, [ecx + edx*8]
mov edx, ebx
call fcn.00410880
mov eax, dword [esp + 0x4c]
add edi, 8
add esi, 0xc
dec eax
mov dword [esp + 0x4c], eax
jne 0x439824
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov byte [ebx + 0x29], 0x83
mov dword [ebx + 0x2c], edx
call fcn.0040d5c0
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
mov dword [ebx + 0x30], eax
mov eax, ebp
call fcn.0040ec90
mov ecx, 1
call fcn.0040eaa0
jmp 0x43a2bb
test ah, 0x10
je 0x439906
mov eax, ebp
call fcn.0040ec00
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x1c]
push 0
push 3
mov esi, eax
mov eax, dword [esp + 0xa8]
push eax
push ecx
push 0xffffffffffffffff
push edi
push edx
mov dword [esp + 0x60], esi
call fcn.00432a40
push esi
push eax
mov esi, ebx
mov eax, ebp
call fcn.00439300
mov ecx, dword [esp + 0x34]
mov esi, eax
mov eax, dword [ebx + 0x1c]
push ecx
mov ecx, esi
mov edx, 0x15
mov dword [esp + 0x5c], eax
call fcn.00414e70
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x38]
push esi
push edx
push edi
push 0x34
call fcn.00414dd0
push esi
push 0xffffffffffffffff
push edi
mov esi, ebp
call fcn.0040e950
add esp, 0x44
mov byte [ebx + 0x29], 0x88
jmp 0x43a2bb
test ah, 0x20
je 0x439b19
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x1c]
push 0
push 0x24
push eax
push ecx
push 0xffffffffffffffff
push edi
push edx
mov dword [esp + 0x48], 0x88
mov dword [esp + 0x68], 0
call fcn.00432a40
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x38]
push 0
push 0x18
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xc4]
push eax
push ecx
push 0xffffffffffffffff
push edi
push edx
call fcn.00432a40
add esp, 0x38
test esi, esi
mov dword [esp + 0x34], eax
je 0x43997c
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4399f4
mov esi, dword [eax]
mov edx, dword [esi + 0xc]
lea ecx, [esp + 0x5c]
push ecx
push edx
mov ebx, ebp
mov byte [esp + 0x40], 0x2f
mov byte [esp + 0x41], 0x2d
mov byte [esp + 0x42], 0x2c
mov byte [esp + 0x43], 0x2e
call fcn.00415d80
movzx edx, byte [esi]
mov ecx, dword [esp + 0x1c]
mov edi, eax
mov eax, dword [esp + 0x44]
push edi
push eax
movzx eax, byte [esp + edx - 5]
push ecx
push eax
mov eax, dword [esp + 0x28]
call fcn.00414dd0
add esp, 0x18
mov ecx, 1
mov eax, ebp
call fcn.0040eb30
mov esi, dword [esp + 0x5c]
mov edx, ebp
call fcn.0040ec20
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
call fcn.00410880
mov ebx, edx
jmp 0x439a12
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
xor edx, edx
test esi, esi
sete dl
push ecx
mov ecx, edi
lea edx, [edx + edx + 0x3f]
call fcn.00414e70
add esp, 4
mov eax, dword [esp + 0x34]
test eax, eax
je 0x439a7a
mov edx, eax
mov eax, dword [edx]
mov edx, dword [ebp + 0x48]
inc edx
mov dword [esp + 0x5c], eax
mov dword [ebp + 0x48], edx
mov eax, dword [eax + 0xc]
mov esi, edx
mov edi, ebp
mov dword [esp + 0x4c], esi
call fcn.00415dc0
mov eax, dword [esp + 0x5c]
mov al, byte [eax]
cmp al, 0x4f
je 0x439a5c
cmp al, 0x4d
je 0x439a5c
mov eax, dword [esp + 0x24]
xor ecx, ecx
test eax, eax
setne cl
lea ecx, [ecx + ecx + 0x4d]
mov dword [esp + 0x2c], ecx
jmp 0x439a6f
mov eax, dword [esp + 0x24]
xor edx, edx
test eax, eax
sete dl
lea edx, [edx + edx + 0x4e]
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x34]
mov edx, ebx
call fcn.00410880
mov eax, dword [esp + 0x10]
call fcn.0040d5c0
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
test esi, esi
sete cl
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0x30]
add cl, 0x42
test eax, eax
mov byte [ebx + 0x29], cl
mov dword [ebx + 0x2c], edx
jne 0x439ab0
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x439ab0
mov byte [ebx + 0x2a], 1
cmp dword [esp + 0x2c], 0x88
je 0x43a2bb
mov eax, ebp
call fcn.0040ec00
mov esi, dword [esp + 0x14]
mov edi, eax
mov eax, dword [esp + 0x10]
push eax
mov eax, edi
mov ecx, esi
mov edx, 0x3d
mov dword [esp + 0x48], edi
call fcn.00414e70
push edi
push 0xffffffffffffffff
push esi
mov esi, ebp
call fcn.0040e950
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x20]
push edi
push ecx
push edx
push eax
mov eax, esi
call fcn.00414dd0
add esp, 0x20
mov dl, 0x6b
mov eax, esi
call fcn.0040d660
jmp 0x43a2bb
test eax, 0x30000
je 0x439fcf
mov edx, dword [ebx + 0x14]
mov esi, dword [ebx + 8]
mov ecx, dword [ebx + 4]
mov dword [esp + 0x3c], edx
mov edx, dword [esi + 8]
mov edx, dword [edx + ecx*4]
xor eax, eax
mov dword [esp + 0x2c], edx
test byte [esp + 0x98], 1
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], 0x41
mov dword [esp + 0x78], 0x3f
mov dword [esp + 0x7c], 0x2f
mov dword [esp + 0x80], 0x2c
mov dword [esp + 0x84], 0x2e
mov dword [esp + 0x88], 0x2d
mov dword [esp + 0x60], 0x88
mov dword [esp + 0x64], 0x5c
mov dword [esp + 0x68], 0x51
mov dword [esp + 0x18], ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], eax
je 0x439bc6
test dword [ebx], 0x1000000
je 0x439bc6
cmp dword [esi + 4], ecx
jle 0x439bc6
mov eax, 1
mov dword [esp + 0x54], eax
test dword [ebx], 0x100000
je 0x439bfd
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x2c]
push esi
push 0x18
push eax
mov eax, dword [esp + 0x28]
push ecx
push edx
push edi
push eax
call fcn.00432a40
mov dword [esp + 0x3c], eax
add esp, 0x1c
mov eax, 1
test dword [ebx], 0x200000
je 0x439c34
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x2c]
push esi
push 0x24
push ecx
mov ecx, dword [esp + 0x28]
push edx
push eax
push edi
push ecx
call fcn.00432a40
mov dword [esp + 0x4c], eax
add esp, 0x1c
mov eax, 1
mov ecx, dword [esp + 0x9c]
mov edi, dword [esp + 0x28]
lea edx, [esp + 0x38]
push edx
mov edx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0xa8]
push eax
push ecx
push edx
push edi
push ebp
call fcn.00439460
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x48], eax
mov eax, dword [ebp]
push eax
call fcn.00412a70
mov ebx, dword [esp + 0x38]
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x60], eax
mov eax, dword [esi + 4]
add esp, 0x20
xor edx, edx
cmp ebx, eax
mov dword [esp + 0x34], ecx
jge 0x439cab
mov eax, dword [esi + 0x28]
xor ecx, ecx
cmp byte [ebx + eax], cl
mov eax, dword [esp + 0x24]
sete cl
cmp eax, ecx
jne 0x439cab
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x30], eax
jmp 0x439caf
mov eax, dword [esp + 0x30]
cmp eax, edx
je 0x439cc4
test byte [eax + 0x10], 0x28
jne 0x439cc4
mov dword [esp + 0x48], edx
mov ecx, 1
jmp 0x439ccd
mov ecx, 1
mov dword [esp + 0x48], ecx
mov esi, dword [esp + 0x20]
cmp esi, edx
je 0x439cdf
test byte [esi + 0x10], 0x28
mov dword [esp + 0x58], edx
je 0x439ce3
mov dword [esp + 0x58], ecx
cmp eax, edx
jne 0x439cef
cmp ebx, edx
mov dword [esp + 0x4c], edx
jle 0x439cf3
mov dword [esp + 0x4c], ecx
cmp eax, edx
mov esi, ebx
je 0x439e89
mov edx, dword [esp + 0x30]
mov eax, dword [edx]
mov ebx, dword [eax + 0xc]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
lea esi, [ecx + edx]
mov eax, ebx
mov edi, ebp
mov dword [esp + 0x54], ebx
call fcn.00415dc0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
push eax
push esi
push ecx
mov ecx, ebx
call fcn.00415bd0
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x24]
add esp, 0xc
test eax, eax
je 0x439d68
mov edi, eax
mov bl, byte [edi + esi]
mov eax, dword [esp + 0x54]
call fcn.00415810
cmp al, 0x62
jne 0x439d54
mov byte [edi + esi], al
mov dl, byte [edi + esi]
mov ecx, dword [esp + 0x54]
call fcn.0040e7c0
test eax, eax
je 0x439d68
mov byte [edi + esi], 0x62
mov ebx, dword [esp + 0x18]
inc esi
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x2c]
push ebp
mov ecx, esi
call fcn.004173c0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
lea edx, [eax + ecx*2]
mov eax, dword [esp + 0x28]
lea ecx, [eax + edx*2]
mov edx, dword [esp + ecx*4 + 0x70]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
push esi
push edx
mov edx, dword [esp + 0x48]
call fcn.004197f0
mov eax, dword [esp + 0x2c]
add esp, 0xc
test eax, eax
mov esi, ebx
je 0x439e4c
mov ecx, dword [eax]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
mov ebx, dword [ecx + 0xc]
lea esi, [edx + eax]
mov ecx, 1
mov edi, esi
mov eax, ebp
mov dword [esp + 0x54], ebx
call fcn.0040ea60
mov eax, ebx
mov edi, ebp
call fcn.00415dc0
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
push ecx
push esi
push edx
mov ecx, ebx
call fcn.00415bd0
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x24]
add esp, 0xc
test eax, eax
mov esi, eax
je 0x439e30
mov bl, byte [esi + edi]
mov eax, dword [esp + 0x54]
call fcn.00415810
cmp al, 0x62
jne 0x439e1c
mov byte [esi + edi], al
mov dl, byte [esi + edi]
mov ecx, dword [esp + 0x54]
call fcn.0040e7c0
test eax, eax
je 0x439e30
mov byte [esi + edi], 0x62
mov edx, dword [esp + 0x2c]
inc edi
push ebp
mov eax, esi
mov ecx, edi
call fcn.004173c0
mov ebx, dword [esp + 0x1c]
mov esi, edi
mov edi, dword [esp + 0x14]
add esp, 4
mov eax, dword [esp + 0x38]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.00408130
mov edx, dword [esp + 0x48]
mov eax, dword [ebp]
push edx
push eax
call fcn.00408130
add esp, 0x10
mov eax, edi
call fcn.0040d5c0
mov ecx, dword [esp + 0x28]
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x439ec6
test ebx, ebx
jne 0x439ec6
xor eax, eax
jmp 0x439ecb
cmp dword [esp + 0x54], edx
je 0x439d6d
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
lea eax, [edx + ebx]
push edi
xor ecx, ecx
mov edx, 0xa
call fcn.00414e70
add esp, 4
lea esi, [ebx + 1]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 1
jmp 0x439d71
mov eax, 1
mov edx, dword [esp + 0x24]
inc edx
imul edx, eax
mov eax, dword [esp + edx*4 + 0x60]
cmp eax, 0x88
je 0x439f08
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
push esi
push eax
mov eax, dword [esp + 0x34]
call fcn.004197f0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x60]
add esp, 8
cmp ecx, eax
setne dl
mov eax, edi
call fcn.0040d660
mov eax, ebp
call fcn.0040ec00
mov ecx, dword [esp + 0x28]
mov esi, eax
test dword [ecx], 0x300000
je 0x439f41
mov edx, dword [esp + 0x3c]
push esi
push ebx
push edx
push 0x1c
mov eax, edi
call fcn.00414dd0
mov eax, dword [esp + 0x60]
push edi
mov ecx, esi
mov edx, 0x49
call fcn.00414e70
add esp, 0x14
mov edx, ebp
call fcn.0040ec20
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
mov edx, edi
call fcn.00410880
mov eax, dword [esp + 0x20]
call fcn.00410880
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x439fb1
mov eax, ebp
call fcn.0040ec00
mov ecx, dword [esp + 0x3c]
mov ebx, eax
mov eax, dword [esp + 0x10]
push eax
mov eax, ebx
mov edx, 0x48
mov dword [esp + 0x48], ebx
call fcn.00414e70
mov ecx, dword [esp + 0x18]
push ebx
push 0xffffffffffffffff
push ecx
mov esi, ebp
call fcn.0040e950
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
push edx
mov eax, ebx
mov edx, 0x30
call fcn.00414e70
add esp, 0x14
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
test edx, edx
sete al
add al, 0x42
mov byte [edi + 0x29], al
mov dword [edi + 0x2c], ecx
jmp 0x43a2bb
test eax, 0x10000000
mov eax, dword [esp + 0x10]
je 0x43a291
mov esi, dword [ebp + 0x48]
inc esi
xor edi, edi
mov dword [ebp + 0x48], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
call fcn.00414e90
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 8]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x20], eax
mov byte [ebx + 0x29], 3
mov dword [ebx + 0x2c], esi
mov eax, dword [ecx + 0x18]
cmp eax, 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x34], edx
jle 0x43a0c2
mov edi, dword [esp + 0x94]
mov esi, dword [ebp]
sub eax, edi
dec eax
mov ecx, eax
imul ecx, ecx, 0x38
add ecx, 0x40
mov dword [esp + 0x4c], eax
call fcn.00412930
test eax, eax
mov dword [esp + 0x3c], eax
je 0x43a3f6
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
inc eax
mov word [edx + 2], ax
mov word [edx], ax
mov eax, dword [esp + 0x90]
lea edi, [edx + 8]
mov ecx, 0xe
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x4c]
add eax, 8
cmp ecx, 1
jl 0x43a0c9
add edx, 0x40
mov dword [esp + 0x48], edx
lea edx, [ebx + 0x68]
mov dword [esp + 0x5c], ecx
movzx esi, byte [edx]
mov edi, dword [esp + 0x48]
imul esi, esi, 0x38
add esi, eax
mov ecx, 0xe
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
add esi, 0x38
add edx, 0x40
dec ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x5c], ecx
jne 0x43a094
jmp 0x43a0c9
mov edx, dword [ecx + 8]
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x98]
and eax, 8
mov dword [esp + 0x5c], eax
jne 0x43a0ff
mov eax, dword [ebp + 0x48]
inc eax
lea ecx, [eax + 1]
mov dword [ebp + 0x48], ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x10]
push ecx
xor ecx, ecx
mov edx, 0xa
mov dword [esp + 0x58], eax
call fcn.00414e70
add esp, 4
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
push edi
xor ecx, ecx
mov edx, 7
call fcn.00414e70
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0x14]
xor ecx, ecx
add esp, 4
cmp edx, ecx
mov dword [esp + 0x40], ecx
jle 0x43a22d
mov dword [esp + 0x4c], ecx
mov edx, dword [esp + 0x4c]
mov eax, dword [eax + 0x1c]
mov ecx, dword [esp + 0x14]
add eax, edx
mov edx, dword [eax + 8]
cmp edx, ecx
je 0x43a154
cmp word [eax + 0x10], 0x200
jne 0x43a20a
mov eax, dword [eax]
mov ecx, dword [esp + 0x3c]
push 0xf0
push 0
push eax
push ecx
push ebp
call fcn.00440af0
mov esi, eax
add esp, 0x14
test esi, esi
je 0x43a20a
cmp word [esp + 0x5c], 0
jne 0x43a1dc
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x14]
mov ecx, dword [esp + 0x40]
dec eax
cmp ecx, eax
jne 0x43a193
or edi, 0xffffffff
jmp 0x43a197
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [eax + 0xc]
push edx
push 0xffffffffffffffff
push ecx
mov ebx, ebp
call fcn.00437690
add esp, 0x10
push edi
mov edi, dword [esp + 0x14]
mov edx, eax
mov eax, edi
call fcn.0040d5c0
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x58]
add ecx, 2
push 0x6b
call fcn.004197f0
mov ebx, dword [esp + 0x30]
add esp, 8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
push edi
mov edx, 2
call fcn.00414e70
mov al, byte [esi + 7]
add esp, 4
test al, al
je 0x43a201
mov dword [esp + 0x24], 1
push esi
call fcn.004174c0
add esp, 4
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0x14]
inc ecx
add esi, 0x28
cmp ecx, edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], esi
jl 0x43a134
mov eax, edi
call fcn.0040d5c0
push eax
mov eax, dword [esp + 0x4c]
mov ecx, edi
call fcn.0040d600
mov eax, dword [ebx + 0x18]
push edi
xor ecx, ecx
mov edx, 1
call fcn.00414e70
mov edx, dword [esp + 0x34]
add esp, 8
mov ecx, edi
call fcn.0040d4e0
mov edx, dword [esp + 0x90]
cmp dword [edx + 0x18], 1
jle 0x43a27c
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.00408130
add esp, 8
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x43a2bb
mov eax, dword [esp + 0x20]
mov edx, ebx
call fcn.00410880
jmp 0x43a2bb
mov dl, byte [esi + 0x4ad70c]
mov byte [ebx + 0x29], dl
mov dword [ebx + 0x2c], edi
movzx edx, byte [esi + 0x4ad710]
push eax
mov eax, dword [esp + 0x40]
mov ecx, edi
call fcn.00414e70
add esp, 4
inc eax
mov dword [ebx + 0x30], eax
mov byte [ebx + 0x2a], 1
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
mov edx, dword [edi + 4]
call fcn.004106c0
mov ecx, dword [esp + 0x9c]
mov esi, dword [esp + 0xa0]
not eax
and ecx, eax
mov eax, dword [edi + 0x14]
not edx
and esi, edx
test eax, eax
mov dword [esp + 0xa0], esi
mov esi, dword [edi + 0x1c]
mov dword [esp + 0x9c], ecx
jle 0x43a365
mov dword [esp + 0x5c], eax
lea ecx, [ecx]
test byte [esi + 0x12], 6
jne 0x43a357
mov ecx, dword [esp + 0x9c]
mov eax, dword [esi + 0x20]
mov edx, dword [esp + 0xa0]
and eax, ecx
mov ecx, dword [esi + 0x24]
and ecx, edx
or eax, ecx
je 0x43a32f
mov ecx, dword [esp + 0x90]
mov byte [ecx + 7], 1
jmp 0x43a357
mov ecx, dword [ebx + 0xc]
test ecx, ecx
mov eax, dword [esi]
je 0x43a33e
test byte [eax + 2], 1
je 0x43a357
mov edx, dword [esp + 0x50]
push 8
push edx
push eax
push ebp
call fcn.004351c0
mov al, byte [esi + 0x12]
add esp, 0x10
or al, 4
mov byte [esi + 0x12], al
mov eax, dword [esp + 0x5c]
add esi, 0x28
dec eax
mov dword [esp + 0x5c], eax
jne 0x43a300
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x43a3eb
mov ecx, dword [esp + 0x10]
mov eax, ecx
call fcn.0040d5c0
mov dword [ebx + 0x24], eax
mov eax, dword [ebx + 0xc]
push ecx
mov ecx, 1
mov edx, 7
call fcn.00414e70
add esp, 4
mov eax, ebp
call fcn.0040eb00
mov eax, dword [edi + 0x14]
mov esi, dword [edi + 0x1c]
xor ebx, ebx
test eax, eax
jle 0x43a3eb
test byte [esi + 0x12], 6
jne 0x43a3e0
mov ecx, dword [esp + 0x9c]
mov eax, dword [esi + 0x20]
mov edx, dword [esp + 0xa0]
and eax, ecx
mov ecx, dword [esi + 0x24]
and ecx, edx
or eax, ecx
jne 0x43a3e0
mov eax, dword [esp + 0x50]
mov ecx, dword [esi]
push 8
push eax
push ecx
push ebp
call fcn.004351c0
mov al, byte [esi + 0x12]
add esp, 0x10
or al, 4
mov byte [esi + 0x12], al
mov eax, dword [edi + 0x14]
inc ebx
add esi, 0x28
cmp ebx, eax
jl 0x43a3a3
mov esi, dword [esp + 0x44]
mov edx, ebp
call fcn.0040ec20
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0xa0]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret